問題タブ [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.
iphone - addObserver が即座にクラッシュするのはなぜですか?
インターネット経由で非同期クエリを実行するためのさまざまな種類の操作 (NSOperation から派生) があります。通常どおり、isFinished プロパティを観察することで、いつ終了するかを判断します。
特定の種類の操作が終了したら、最初の情報を使用して次の種類の操作を作成したいと考えています。しかし、そうすると、操作で addObserver を呼び出すと、アプリがクラッシュし、アクセスが悪くなります。オブザーバーはランダムなスレッドで呼び出されるので、フォローアップ操作を作成し、オブザーバーをメインスレッドに設定してみました。変わりはない。これは、observeValueForKeyPath で行われています。
コンテキストは文字列への void* です。私は、正常に動作する他の多くの操作に同じ構文を使用しています。コンテキストの定義方法は次のとおりです。
ここで推測できる人はいますか?ありがとう!
編集:返信ありがとうございます。クラッシュ ログは生成されません。addObserver 行で不正なアクセスが発生して終了するだけです。これは、observerValueForKeyPath が入力されたメイン スレッドまたはバックグラウンド スレッドのどちらで実行するかに関係なく発生します。
iphone - viewWillAppear および UIApplicationDidBecomeActiveNotification
アプリがアクティブになったときに、UIApplicationDidBecomeActiveNotification を使用してテーブルビューを更新しています。私の問題は、ViewWillAppear で、このテーブルのデータを更新するメソッドも呼び出していることです。
これにより、アプリケーションの起動時にテーブルが 2 回更新されます。アプリが最初に起動されたときにそれらの1つを起動しないようにするにはどうすればよいですか? テーブルを更新すると、ネットワーク データとローカル データが集中的に処理されます。そのため、この操作は 1 回だけ実行してください。
ありがとう。
objective-c - UIViewController の NSNotificationCenter へのオブザーバーの追加と削除
さまざまな Apple の例 (たとえば、Add Music ) を見ると、オブザーバーが のデフォルトに追加さNSNotificationCenter
れviewDidLoad
、それらが で削除されていることがわかりますdealloc
。viewDidLoad
呼び出されずに複数回呼び出される可能性があるため、これは危険に思えdealloc
ます。これにより、同じオブザーバーが複数回追加され、ハンドラーが複数回呼び出されます。
これに対する解決策は、 でオブザーバーも削除することですviewDidUnload
が、同じオブザーバーが で 2 回削除される可能性があることを意味し、dealloc
これは潜在的な問題のようです。
私は何が欠けていますか?
ios - AppDelegate の到達可能性のオブザーバーをトリガーできません
アプリケーションを介して myReachabilityDidChangedMethod をトリガーすることを目的とした、到達可能性のオブザーバーを作成するために、AppDelegate に上記のコード ブロックがあります。
ただし、AppDelegate にある myReachabilityDidChangedMethod をトリガーすることはできません。Wi-Fi をオンまたはオフにすると、シミュレーターと iPad の両方でテストしましたが、両方で応答がありませんでした。
ios5 - AVPlayer observeValueForKeyPath
ストリーム コンテンツを再生するオーディオ アプリがあります。問題は、信号が弱い場合、再生が停止することがあります。ネットワークはまだ到達可能ですが、バッファが空になったようです。
プレイヤーのステータスの変化を監視するオブザーバーを実装しようとしましたが、機能していません。メソッドが呼び出されません。
特殊性として、AVPlayer インスタンスは AppDelegate にあります。これは、複数のビューがあり、プレーヤーは表示されているビューを再生し続ける必要があるためです。ここにサンプルコードの一部があります:
イベントが発生しない理由を知っている人はいますか? メソッドに 2 つのアラートがありますが、誰も起動されません。つまり、メソッドに入らないということです。このすべての目標は、これが発生した場合にプレーヤーが再起動する方法を実装しようとすることです。
ありがとう !
ios - 自己のaddObserver
とても簡単な質問ですが、答えが見つからないようです。(iOS 5以降のアプリの開発)。
私のAppDelegateには、プロパティがあります。これを呼び出しましょう@property (non atomic) BOOL aFlag;
。値が変更された場合にAppDelegateに通知を受け取りたいのですが。これが私が試したものです(すべてがで発生しますAppDelegate.m
)。これは、2つの異なるオブジェクトをオブザーバーで「リンク」した場合と同じです。
しかしobserveValueForKeyPath:
、呼ばれていません。
私はどこが間違っていますか?ありがとう。
objective-c - オブジェクトの割り当て解除中にオブジェクトのオブザーバーの登録を解除する
私がこの権利を求めているかどうかはわかりませんが、とにかく試してみます。
この小さなコードを呼び出すプログラムがあります...
最終的にlocalCalculateTimeFilesがなくなり、現在のコードのビットを削除したいと思います(大雑把に言えば)。何もせず、適切なremoveObserverを実行せずにlocalCalculateTimesFilesが消えると、ランタイムは例外をスローします。以前はもっと警告だったと思いますが、今ではプログラムが異常終了します。
すべてのオブジェクトポインタを適切なタイミングで適切な場所に配置するとします。私がやりたいのは、localCalculateTimeFilesに、割り当て解除の途中で(いわば)オブザーバーを削除させることです。
Appleのドキュメントによると、localCalculateTimeFilesに次のようなメソッドを追加して作業を行うことができるようです...
log_fileを処理するためのロジックを、オブザーバーの登録を解除する新しいロジックに置き換えます。明らかに、removeObserverメソッドが操作する適切な項目を持っていることを確認するために、すべてのポインターが正しいことを確認する必要があります。私にそれをきちんとやらせてください、これは理にかなっていますか、それとも私は完全にオフですか?
cocoa - 「object.attribute」のようなキーパスを観察する方法
こんにちは、私はカカオ初心者で、これが私の最初の投稿です:P
私は非常に単純なリズムゲームを作ろうとしていますが、行き詰まります.これが私が得たものです:
これは機能しません(audioPlayerを適切に初期化しましたが、サウンドを再生できますが、 currentTime 値が変更されたときにキャッチできません)
これらのコードを別のプロパティ "double testNumber" でテストし、それを "keyPath" の引数として設定し、画面に触れたときに値を 1 増やしてから、うまくいきました。しかし、audioPlayer.currentTime を監視できるようにするにはどうすればよいですか。この値が変更されたときに通知を受け取りたいだけです。他のアドバイスもいただければ幸いです。私はあなたを頼りにしています、助けてください、ありがとう:)
iphone - addObserver: 名前
私は次のようにaddObserverを使用しています:
すべてがうまく機能しますが、オブザーバーが不要になったら削除するのが良い形かもしれないと思いました...次の行を使用する必要があることがわかりました。
問題は、addObserver 行を変更して名前を含め、removeObserver が削除するオブザーバーを認識できるようにすると、通知が呼び出されなくなることです。この行は実行されますが、名前が追加されると無視されます。
名前を nil に戻すと、再び機能します。ここで私が間違っていることを知っている人はいますか?
ありがとう!