問題タブ [key-value-observing]
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.
objective-c - オブジェクトにキー値オブザーバーがアタッチされているかどうかを確認するにはどうすればよいですか
目的の c オブジェクトに removeObservers: をキー パスに対して指示し、そのキー パスが登録されていない場合、sads がクラックされます。お気に入り -
「オブザーバーとして登録されていないため、キー パス "theKeyPath" のオブザーバーを削除できません。」
オブジェクトにオブザーバーが登録されているかどうかを判断する方法はありますか?
iphone - iPhone Key-Value オブザーバー: オブザーバーが UITableViewController に登録されていません
こんにちは、iPhone 開発者の皆さん。
私は経験豊富なソフトウェア エンジニアですが、iPhone プラットフォームは初めてです。サブクラス化されたView Controllerの実装に成功し、View Controllerスタックで親/子ビューをプッシュおよびポップできます。ただし、オブジェクトが子View Controllerで編集されているときにView Controllerを更新しようとすると、問題が発生しました。何度も実験に失敗した後、これを行うのに最適な方法のように見えるキー値オブザーバー API を発見しました。次に、メイン/親View Controllerにオブザーバーを登録し、オブザーバーでビューをリロードする予定です。アイデアは、オブジェクトが子View Controllerで編集されると、これが起動されるということです。ただ、オブザーバーが登録されていないと思うのは、編集中のView Controllerで値が更新されていることがわかっているので(デバッガーで確認できます)、
助けてください!
以下にコード スニペットを示します。
観察中の物体。setvalue メッセージで呼び出されたときに値が設定されるため、これはキー値に準拠していると思います (以下の子ビュー コントローラーを参照)。
じ:
Xm:
メイン ビュー Controller.h:
メイン ビュー Controller.m:
Child View Controller.m: (これにより、子View Controllerのオブジェクトの値が正しく設定されます)
objective-c - observeValueForKeyPath:ofObject:change:context からのパラメーター:
このメソッドからのパラメーターが何を返すのだろうと思っていました。
ドキュメントでは、それは言う
keyPath object を基準とした、変更された値へのキー パス。
objectキー パス keyPath のソース オブジェクト。
オブジェクトに関連するキー パス keyPath でプロパティの値に加えられた変更を記述するディクショナリ。
contextレシーバーがキー値監視通知を受信するように登録されたときに提供された値。
ドキュメントが少しわかりにくいので、これらのパラメータについて説明していただけないでしょうか。
objective-c - KVOから`change`ディクショナリの情報を取得する
方法
change
値の変更の性質に関する情報を含むディクショナリであるパラメータがありますが、このディクショナリに何が含まれていたかをどのように確認できますか?
objective-c - 1 つではなく 3 つの通知
Cocoa/Objective-C でシンプルな MVC アプリを開発しています。通知と KVO に関して奇妙な問題 (または誤解) があります。
MainMenu.xib に AppController オブジェクトがあるため、そのプロパティを変更するawakeFromNib
ために登録するメソッドを実装します。次の方法でオブザーバーとして追加します。NSImageView
image
self
はbackgroundImageView
に接続されていIBOutlet
ます。AppController
NSImageView
標準的なobserveValueForKeyPath:ofObject:change:context
方法では、受信した通知をログに記録するだけです。
image
問題は - の値を変更するNSImageView
と、1 つではなく 3 つの通知が表示されることです。これで私を助けてもらえますか?オプションや一般的なオブザーバーの登録で何かを見落としているのではないでしょうか?
UPDATE :のサブクラスであるクラスbackgroundImageView
のインスタンスです。ドラッグ アンド ドロップ操作をドラッグ先として処理するために、後者をサブクラス化しました。が呼び出されると (ドラッグの最後の「状態」)、プロパティの値が~ の間で変更されます。BackgroundImageView
NSImageView
performDragOperation:
image
setImage
willChangeValueForKey
didChangeValueForKey
cocoa - Cocoa Key Value Bindings: Controller Key のさまざまなオプションの説明は?
Interface Builder を使用してコントロールを NSArrayController にバインドすると、バインディング インスペクタの [Controller Key] フィールドの下にさまざまなオプションが表示されます。
「arrangedObjects」とは何かを理解し、「選択」とは何かをある程度理解していますが、すべてのオプションとそれぞれをいつ使用するかについての本当に良い説明を見たいと思っています。リストには、selectionIndexes、selectionIndex、selectedObject、sortDescriptors などがあります。これらのオプションの適切な説明を見つけることができませんでした。
ターゲット > 選択にバインドされているボタンに問題があるため、これらのコントローラー キーをより深く理解することが問題のデバッグに役立つことを願っています。
ありがとう!!!
objective-c - -setValue:forKey:vs "object.var=..."を使用する
これらの2行のコードの違いは、2行目はKVOに準拠しており、1行目は準拠していないということです。
私が尋ねている理由は、500を超えるオブジェクトの60の属性を更新する必要があるためです。少数の属性を超えるKVO通知は必要ありません。
UITableViewにNSFecthedResultsControllerを使用していますが、セルで過度のsetNeedDisplayをトリガーしたくありません。
objective-c - Objective-C での ANY クラス プロパティへの変更の観察
簡単に言えば、Objective-C クラスのプロパティが変更されたときに一般的な通知を受け取る方法はありますか? setProperty:
KVO を使用して特定のプロパティの変更を監視できることはわかっていますが、クラスにメッセージが送信されるたびに特定のメソッドを呼び出す必要があります。特にどのプロパティが変更されたかを気にすることなく、一般的な通知を受け取ることができるようにしたいと考えています。
これを行う理由を明確にするのに役立つ場合は、ここにある高速テーブルスクロールコードを使用しています: http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview /
これを実現するプロセスの一部として、テーブル ビュー セルのプロパティが変更されるたびに、[ self setNeedsDisplay ]
を呼び出す必要があります。この呼び出しを行うためだけに、クラス内のすべてのプロパティのセッター メソッドをオーバーライドする必要はありません。