私は、理想的には彼らのinits
とdeinits
、内のコードを持っているでしょう2つのクラスを持っている例:複数のinitとdeinitsを継承するための迅速なベストプラクティス?
class Tappable {
init() { Registry.register(tappable: self) }
deinit { Registry.deregister(tappable: self) }
}
class Resizable {
init() { Registry.register(resizable: self) }
deinit { Registry.deregister(resizable: self) }
}
私は両方から継承し、例えば:
class UIElement: Tappable, Resizable {}
しかし、もちろん、私はしていないことができます迅速。私の現在のソリューションは、1プロトコルを作成し、Registry
への呼び出しでinit
とdeinit
を書くために私を思い出させるためにあるノートを入れて、例えばする:
//: Classes that implememt `Resizable` must call `Registry.register(resizable: self)` in all `init`s and have `deinit { Registry.deregister(resizable: self) }`.
protocol Resizable {}
class UIElement: Tappable, Resizable {
override init() {
super.init()
Registry.register(resizable: self)
}
deinit { Registry.deregister(resizable: self) }
}
ある良い方法はありますか?あなたは、各プロトコルを持つことができ
この提案をお寄せいただきありがとうございます。できる限りアイデアを使用しますが、正確な署名を持つinitを常に持っているとは限りません。アイデアの良い副作用は、依存性注入を強制することです。再度、感謝します。 –