簡體   English   中英

Swift 2.2和NSProxy。 如何使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM