2015-11-05 12 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ハッキー)回避策は、associated objectsを使用してカテゴリ内のストレージを取得することでした。あなたがimport ObjectiveCの場合、これはSwiftでも有効です。
この回答にはsome detailsが含まれています。

+0

「NSObject」サブクラスを関連付ける場合にのみ機能することを思い出してください。 –

関連する問題