2015-11-05 66 views
9

我正在使用第三方庫來製作使用Swift的新應用程序。該類/庫的作者已使用關鍵字final進行了最終確定,可能是爲了優化並防止重寫其屬性和方法。我可以在Swift中擴展最終的類嗎?

例子:

final public class ExampleClass { 
    // Properties and Methods here 
} 

是否有可能對我來說擴展類,並增加一些新的屬性和方法,它無需重寫默認值?

像這樣:

extension ExampleClass { 
    // New Properties and Methods inside 
} 

回答

7

的擴展可能不包含存儲性能,而且可以在裏面添加方法。

5

擴展(如Objective-C類別)不允許存儲屬性。
雖然方法和計算的屬性都很好。

Objective-C中常見的(但是IMO hacky)解決方法是使用associated objects來獲得類別中的存儲。這也適用於斯威夫特,如果你import ObjectiveC
此答案包含some details

+0

讓我們提醒一下,它只適用於關聯'NSObject'子類。 –