私はプロトコルを持っています
protocol Example: class {
var value: Bool { get set }
func foo()
func bar()
}
そして拡張子:
extension Example {
// var value: Bool { // Error: Extensions must not contain stored properties
// didSet {
// switch value {
// case true:
// foo()
// case false:
// bar()
// }
// }
// }
func foo() {
// logic...
}
func bar() {
// logic...
}
}
value
がのとき、呼ばれtrue
たいfoo()
value
がのとき、呼ばれfalse
たいbar()
didSet{ }
ただし、準拠するすべてのクラスにロジックを冗長に実装したくありません。Example
しかし、didSet{ }
拡張機能にロジックを追加しようとすると、Xcode は「拡張機能に格納されたプロパティを含めることはできません」と表示します。
すべての準拠クラスにコピー/貼り付けする必要なく、デフォルトのプロパティ監視ロジックを追加するためのベスト プラクティスは何ですか?
目標:
のサブクラスをUIView
プロトコルに準拠させたいExpandable
。私のプロトコルの要件は、、、isExpanded: Bool
およびexpand()
ですcollapse
。isExpanded = true
を呼び出してexpand()
、isExpanded = false
呼び出したいcollapse()
(設定の動作とよく似ていますisHidden
)。しかし、UIView のすべてのサブクラスについて、ロジックを書き直す必要はありません。Expandable
クラスを に準拠させて、すぐに設定に飛び込みたいと思いますisExpanded
。