如何在Swift中创建NSProxy子类?
尝试添加任何init方法都会出现错误:“无法在初始化器外部调用Super”,或者“在从初始化程序返回之前,并非在所有路径上都调用Super”


使用Objective子类作为基类可以工作,但感觉更像是黑客:
// Create a base class to use instead of `NSProxy`
@interface WorkingProxyBaseClass : NSProxy
- (instancetype)init;
@end
@implementation WorkingProxyBaseClass
- (instancetype)init
{
if (self) {
}
return self;
}
@end
// Use the newly created Base class to inherit from in Swift
import Foundation
class TestProxy: WorkingProxyBaseClass {
override init() {
super.init()
}
}发布于 2019-07-16 06:06:38
NSProxy是一个抽象类。苹果公司关于NSProxy的文档说:“一个抽象的超类定义了一个API,用于为其他对象或尚未存在的对象充当替身。”
维基百科抽象类的文档说:
在支持继承的语言中,抽象类或抽象基类(ABC)是不能实例化的类,因为它要么被标记为抽象,要么只是指定抽象方法(或虚拟方法)。
抽象类的Calling super.init()是错误的。在第二类中,您不是为抽象类调用super.init(),而是调用WorkingProxyBaseClass,这是一个具体的类。在目标c中,您没有调用[super init],因此代码正在工作。
https://stackoverflow.com/questions/49903424
复制相似问题