NSProxy的接口是
public class NSProxy : NSObjectProtocol {
public class func alloc() -> Self
public class func `class`() -> AnyClass
public func forwardInvocation(invocation: NSInvocation)
public func dealloc()
public func finalize()
public var description: String { get }
public var debugDescription: String { get }
public class func respondsToSelector(aSelector: Selector) -> Bool
}所以它没有任何初始化器。但是Swift编译器需要从子类的初始化器调用Super.init。
在从初始化器返回之前,并不会在所有路径上调用Super.init
class SimpleDecorator: NSProxy {
let phone: Phone
init(phone: Phone) { // compile error with Super.init
self.phone = phone
}
}我不把它放在对超级的调用中,它不会编译,但是当然,由于NSProxy没有init,所以当我调用super.init()时它不会编译。
在Swift中有一个NSProxy子类是可能的吗?
发布于 2019-07-16 19:47:03
NSProxy是一个抽象类。苹果公司关于NSProxy的文档说:“一个抽象的超类定义了一个API,用于为其他对象或尚未存在的对象充当替身。”
维基百科抽象类的文档说:
在支持继承的语言中,抽象类或抽象基类(ABC)是不能实例化的类,因为它要么被标记为抽象,要么只是指定抽象方法(或虚拟方法)。
为抽象类调用super.init()是错误的。
https://stackoverflow.com/questions/36478679
复制相似问题