【发布时间】:2016-04-07 14:06:53
【问题描述】:
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
}
}
我没有把它放在对super的调用中,它不会编译,但是当然由于NSProxy没有init,所以当我调用super.init()时它不会编译。
在 Swift 中是否可以有一个 NSProxy 的子类?
【问题讨论】:
-
似乎是一个已知问题:openradar.me/18548454.
-
DateOriginated:04-Oct-2014 03:58PM 也许苹果修复了它。我试图通过扩展将初始化程序添加到 NSProxy,但它不起作用。
标签: swift