問題タブ [addobserver]

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.

0 投票する
1 に答える
214 参照

ios - プロパティのプロパティを観察する

テーブルビューを更新するために、AppDelegate のプロパティを監視しようとしています。少し複雑なので、ここに私のコードの一部を示します。

配列が更新されるたびに UITableView の内容を更新したいと考えています。これを行うためのより効率的な方法があるように感じますが、それを理解できないようです。Apple のドキュメントをオンラインで読んだことがありますが、ちょっと混乱しています。よろしくお願いします!:)

0 投票する
4 に答える
2248 参照

iphone - オブザーバーを削除する方法

ARC 対応プロジェクトがあります

viewDidLoadに追加されたオブザーバーはほとんどありません

すべてのオブザーバーを削除したいので、viewDidUnloadに次の行を追加しました

今私の質問は、これはすべてのオブザーバーを削除することですか?

そうでない場合、どうすればできますか?

アップデート

単一のオブザーバーを削除したい場合、どうすればよいですか?

助けてください。

0 投票する
1 に答える
3608 参照

ios - NSNotification - 通知を投稿する前に、オブザーバーが追加されているかどうかを確認します

私のコードは次の場所でクラッシュしています:

私の仮定は、オブザーバーが追加される前に通知を投稿していることです。

通知を投稿する前に、アクティブなオブザーバーのリストを確認する方法はありますか?

0 投票する
2 に答える
1046 参照

objective-c - addObserver:forKeyPath がアプリ、KVO、目標 c をクラッシュさせている

次のようにして、カテゴリを使用して視差効果を行っています。

詳細はUIScrollView+Parallax.hの下にあります

UIScrollView+Parallax.m

そして、私は次のようにしてテーブルに視差を追加しています

ただし、[self addObserver:forKeyPath:options:context:nil]手がかりがまったくないままアプリをクラッシュさせ続けます。この行をコメントアウトすると、アプリはクラッシュしませんが、視差効果は機能しません。

この問題に対するアイデア。助けてください。ありがとう

0 投票する
2 に答える
1018 参照

ios - NSNotificationCenter addObserver が無視される

NSNotificationsXCode 5.1 (および CorePlot 1.4) を使用する前は、2 つのオブジェクトが問題なく受信していました。ただし、XCode 5.1.1 (Coreplot 1.5) では、addObserver呼び出しがinitメソッド内にある場合、実際には登録されないことがわかりました (これら 2 つのクラスだけで、別のクラスの親オブジェクトで機能します)。NSLogコードがまだ機能していることを確認するために、呼び出しの前後にも配置しました。オブジェクトは両方とも共有の親によって強く参照され、親は必要な通知を問題なく受け取ります。そして、オブジェクトが適切に保持NSLogされdeallocremoveObserverいるため、早期に呼び出されません。

繰り返しになりますが、前回 XCode 5.1 (および CorePlot 1.4) でコンパイルして以来、通知を送信するオブジェクトのコードまたはこれら 2 つのクラスについては何も変更されていません。そして、これと同じ呼び出しがinit親で使用され、完全に機能します。昨夜の私の唯一の解決策は、addObserver呼び出しを新しいメソッドにリファクタリングし、 の最後でそのメソッドを呼び出すことでしinitた。

しかし、なぜこれが必要だったのかわかりません。addObserverの真ん中に配置された理由initが「無視される」と考える人はいますが、によって呼び出された別のメソッド内initでは機能しますか?

編集、およびメモ:

初期化を表示するコードを追加しました。また、これは CorePlot のグラフ ビューであり、CorePlot も最近 1.5 に更新されたというメモを追加しました (忘れていました)。これが問題の原因である可能性があります。

再割り当てされているというlead_the_zeppelinの提案は、可能のようです。NSLogしかし、NSNotificationCenter から現在の dealloc されたオブジェクトへの呼び出しは、プログラムをクラッシュさせませんか? (dealloc は呼び出されないことに注意してください。オブジェクト インスタンス文字列を , 内に出力することで、これを簡単にテストできますinit。昨夜これをテストして、インスタンスを要求しましたが、そのビットを にコピーしたとは思いませんinit

0 投票する
1 に答える
1278 参照

ios - Key-Value 監視が機能しない IOS

こんにちは、キーと値のペアを使用して追加オブザーバーを使用している IOS アプリケーションを開発しています。しかし、それは機能していません。私は次のことをしました:

しかし、上記のメソッドを呼び出していません。に変更forKeyPathすると、正常にcontentOffset動作します。しかし、私はその価値を変えたいと思っています。私は何か間違ったことをしていますか?助けが必要。ありがとうございました。

0 投票する
1 に答える
1938 参照

ios - addObserver とバランスが取れているように見えても removeObserver がアプリをクラッシュさせる

したがって、 in と呼ばれる単一のメソッドと in と呼ばれる単一のメソッドを持つクラスがCustomCell : UITableViewCellありaddObserver:forKeyPath:options:context:ます。-awakeFromNibremoveObserver:forKeyPath:context:-dealloc

CustomCell.m

これらのセルでビューをロードした後、次のログを取得し、再度バックアウトします (dealloc をトリガーします)。

これらのメソッドが他に呼び出されていないことを再確認しました (ctrl+f)。したがって、どのインスタンスでも、正確に 1 つaddObserver(一意のコンテキストを持つ) と正確に 1 つremoveObserver(そのコンテキストを持つ) があるようです。

0 投票する
0 に答える
79 参照

ios - キー値を取得するための addobserver の問題

Observerパターンを使用するのは初めてです。iOS7 以前のバージョンでアプリケーションを正常に実行しています。

XCode 6 を使用してアプリケーションを iOS8 にアップグレードしました。アプリケーションを XCode 6 で初めて開いて実行すると、エラー メッセージが表示されずにアプリケーションがクラッシュします。

デバッガと例外ブレークポイントを適用してみました。

私が見つけたのは、アプリケーションがaddObserver:行コードでクラッシュしていることです。私がやっていることは次のとおりです。

  1. 私のアプリケーションは最初にログイン画面を開き、
  2. ユーザーはユーザー名とパスワードを入力する必要があります。
  3. 新しいユーザーがログインすると、ユーザー名とパスワードがデータベースに保存されます。
  4. 内部ユーザーには、パスワードを更新して DB に保存するオプションがあります。

ユーザーが 2 回目にログインしたときに、オブザーバーがパスワードの変更をキャッチしていません。

同じコード行は、下位バージョンで正常に動作します。私は何か間違ったことをしていますか?私のコード:

0 投票する
0 に答える
147 参照

macos - addObserver メソッドの名前引数とオブジェクト引数の両方を設定できません

このコードを使用してください

欲しかった通知が届きません。

しかし、名前またはオブジェクトを nil に変更すると、機能します。これら 2 つの引数を非 nil に同時に設定できないのだろうか?</p>