[英]Swift 2.2 and NSProxy. How can I use it?
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的子類?
NSProxy是一個抽象類。 蘋果公司關於NSProxy的文檔說:“一個抽象超類,它為充當其他對象或尚不存在的對象的對象的對象定義API”。
有關Wikipedia抽象類的文檔說:
在支持繼承的語言中,抽象類或抽象基類(ABC)是無法實例化的類,因為它被標記為抽象或僅指定抽象方法(或虛擬方法)。
為抽象類調用super.init()是錯誤的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.