問題タブ [property-observer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 新しいオブジェクトで構造体がプロパティ オブザーバーを呼び出さない
property observers
このコードでは、新しいオブジェクトが作成されたときに呼び出されるようにしたいと考えています。どうすればこれを達成できますか?
これが私がこれまでに持っているものです:
swift - Swift プロトコルのデフォルト変数ロジック
私はプロトコルを持っています
そして拡張子:
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
。
swift - deinit で didSet を使用できますか?
クラスにタイマーの変数を追加し、その didSet オブザーバーを使用して古い値を無効にしました
クラスが初期化解除されたときにタイマーを無効にするのにこれで十分だと思いましたが、didSetが呼び出されていないようです。何故ですか?オブザーバーは初期化解除中に機能していませんか?
ios - Swift でのプロパティ オブザーバーの作成
Property Observers
変数値が変更されたときに UI とオブジェクトを操作するために使用しています。それを念頭に置いて、独自のオブジェクトdidSet
などの独自のプロパティ オブザーバーを作成できるかどうか疑問に思っていました。willSet
私が探しているのは、次のようなものを書くことができることです:
ご存じのとおり、配列に要素を追加するなどの追跡はdidSet
行いwillSet
ませんが、配列値全体の変更を追跡します。プロパティオブザーバーを使用してそれを拡張することを楽しみにしています。クロージャーとプロパティに関するドキュメントを調べましたが、ヒントが見つかりませんでした。
私の質問は、プロパティ オブザーバーを作成するにはどうすればよいですか? 上記のユースケースの 1 つを例として挙げましたが、独自のオブザーバーを作成することを目指しています。
swift - UILabel didSet attributedText が text:didSet に設定された後に呼び出されない
UILabel のサブクラスで、テキストにフォーマットを追加し、次の方法で attributedText を設定します
コードもいくつかありましattributedText - didSet:
たが、これはテキストを設定した後に呼び出されません。理由がわかりません。何か足りないものはありますか?