是否可以在不使用 C++ 进行子类化的情况下为 objc 协议添加默认实现?

问题描述 投票:0回答:0

我知道为 objc 协议添加默认实现有一些限制。昨天我花了几个小时尝试了很多不同的事情。我最终采用了这种非常复杂的方法,但我不知道如何实施它,我很好奇它是否可行。这是想法。

在 Objective C 中,我们有两个方法的协议。我们只需要

FooMethod1
.

的默认实现
@protocol Foo {
- (void)FooMethod1;
- (void)FooMethod2;
}

下一部分需要 C++。由于我不知道如何在 C++ 中完成下一部分,我将以一种快速的格式编写它。你能不能有一个符合协议 Foo 的抽象类。有点像

abstract class FooDefault: Foo {
    func FooMethod1() {
        // Default Implementation for FooMethod1
    }
}

因为它是一个抽象类,如果我理解正确的话,我们不需要 FooMethod2 的实现。

然后在 Swift 中,我们有

protocol Bar: FooDefault {
    //Additional Swift Features
}

class BarImpl: Bar {
    // No Error if FooMethod1 isn't added as it has a default implementation in c++
    // Compiler error thrown if FooMethod2 isn't added as it does not have a default implementation.
}

我真的很熟悉 Swift 和一点 objc。我不知道任何 c++,因此为什么我要在我走得太远之前伸出手来试图弄清楚这是否有可能靠我自己。

我猜从技术上讲,这是一种子类化......

c++ swift objective-c protocols default-implementation
© www.soinside.com 2019 - 2024. All rights reserved.