問題タブ [nsnotification]

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 に答える
2610 参照

iphone - キーボードが表示されたときに「認識されないセレクターがインスタンスに送信されました」

アプリ画面のテキストフィールドをクリックしてキーボードが表示されると、xcodeデバッガーに次のエラーが表示されます。

mainViewControllerのviewDidLoadメソッドで、次のようなregisterForKeyboardNotificationsメソッドを呼び出しています。

[自己registerForKeyboardNotifications];

(mainViewController.mでの)実装は次のとおりです。

何が間違っている可能性がありますか?

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

objective-c - 型付きプロパティを追加したい場合、NSNotification のサブクラス化は正しいルートですか?

サブクラス化しようとしていNSNotificationます。

Apple のドキュメントにはNSNotification、次のように記載されています。

NSNotificationインスタンス変数のないクラス クラスタです。そのため、プリミティブ メソッド、、および をサブクラス化NSNotificationし、オーバーライド する必要があります。任意の指定イニシャライザを選択できますが、イニシャライザが (経由で)の の実装を呼び出さないことを確認してください。 直接インスタンス化することを意図しておらず、その メソッドは例外を発生させます。nameobjectuserInfoNSNotificationinit[super init]NSNotificationinit

しかし、これは私には明らかではありません。このような初期化子を作成する必要がありますか?

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

objective-c - NSNotificationのテストタイプ

オブジェクトがNSNotificationであるかどうかを確認する必要があります。それがNSNotificationであるか、NSNotificationのサブクラスであるかを区別したいので、それがサブクラスであるかどうかを知るだけでは十分ではありません。

したがって、詳しく説明するには、次のことを区別する必要があります。

  1. NSConcreteNotification
  2. NSNotificationのサブクラス(ただし、NSConcreteNotificationではありません)

問題は、NSNotificationsが実際にはNSConcreteNotificationsであり、NSConcreteNotificationがプライベートクラスであるため、テストに使用できないことです。

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

protocols - NSNotification のプロトコルを強制する

基本モデル オブジェクト、特定のモデル オブジェクト (例として generalStatus)、genericXML getter オブジェクトの 3 つのオブジェクトで構成されるモデルがあります。ゲッター オブジェクトがモデルに渡されるので、ネットワークなしでテスト ケースを実行できます。データを取得してビューを更新するモデルごとに特定のコントローラー (例としては genstatusController) があります。低レベルの genericXML getter はネットワーク作業に ASIHttp を使用し、実行ループがあり、アクティビティは非同期です。特定のモデルには genericXML ゲッターがあり、ゲッターを呼び出して XML ドキュメントを更新します。多くの上位モデルがあり、すべてが同じ基本モデルと共通の XML ゲッター オブジェクトを使用しています。genericXML getter は、xml データを更新する非同期リクエストを完了すると、モデルに NSNotification をポストします。次に、モデルは XML を解析し、コントローラーに NSNotification を送信して、データが更新されたことを知らせます。基本オブジェクトと特定のモデルの間にいくつかのプロトコルがあります。このレベルの適用が気に入っています。オブジェクトのセット間で NSNotification を適用する方法はありますか?

ところで、コントローラーはデータの更新を呼び出しますが、モデルからの非同期イベントを待機して、ビューを更新できるように更新が完了したことを通知する必要があります。

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

objective-c - NSNotification を使用してループを中断する

ループのあるメソッドを含むクラスがあります。特定のイベント (ボタンの押下など) が発生した場合、ループを中断できる必要があります。

NSNotificationCenterボタンが押されたときにループを含むクラスに通知するために を使用しています。

ただし、ループの実行中にボタンを押すと、ループを中断するのではなく、ループが完了した後に通知が発生します。

これは、同じスレッドで動作しているためだと思います。

NSNotificationCenterでは、バックグラウンド/別のスレッドで動作させるにはどうすればよいですか? これは可能ですか?または、それを行うより良い方法はありますか?

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

iphone - iOS NSNotification - 一時停止から抜け出すときに安全に無視する方法

作業中のアプリがサスペンド モードから抜け出すときに、アプリがサスペンドされている間に iOS が保存した通知にアプリが応答しないようにする必要がある場合があります。応答コードが実行されないことを確認できるこのキャンセルを実行する適切な場所はどこですか?

removeObserver is applicationWillEnterForeground を配置するとうまくいくことを願っていますが、NSNotification doc でこれについて何も見つけることができませんでした。

編集:シナリオの詳細を追加させてください:

私が取り組んでいるアプリは、次の 7 日間のカレンダー イベントの変更をチェックします。次の 2 回でデータを更新します (eventStore を再クエリします)。 1. iPhone カレンダーから変更に関する NSNotification が送信されたとき。2. 7 日間の範囲が変更されたため、アプリが初めて新しい日にできるようになりました。

私が抱えている設計上の課題は、両方のシナリオが同時に当てはまる場合です (アプリが一時停止から戻り、新しい日になり、アプリが一時停止している間にカレンダー イベントが変更されました)。その場合、イベント ストアを 1 回だけ再クエリします。私の考えでは、applicationWillEnterForeground で、それがその日の最初の起動である場合は、アプリに通知を無視またはドロップするように指示します。この場合に NSNotifications がどのように機能するかについての私の仮定が外れている可能性があるという印象を受けています。どんなガイダンスも素晴らしいでしょう!

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

ios - 終了した NSNotification と中断されたアプリ

アプリが中断されている間に終了することを決定したアプリの通知をiosはどのように処理しますか? 私の理解では、中断されたアプリは警告を受けないため、オブザーバー自体を削除することはできません。

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

objective-c - NSNotificationとNSThread

NSThreadを使用して別のスレッドにオブジェクトを作成します。

そのオブジェクトはイベントを待機します。そのイベントが発生すると、デフォルトの通知センターに通知が投稿されます。

私のAppControllerはその通知を監視し、セレクターを実行します。

質問:セレクターのメソッド(myMethod :)は、メインスレッドで実行されますか、それとも上からのスレッド(myThread)で実行されますか?

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

iphone - nsnotificationcenter メソッドが複数回起動されました

私はviewcontrollerを持っています。その中にnsnotificationオブザーバーがあります。別のビューコントローラーから通知を投稿していますが、nsnotification オブザーバー セレクターが 2 回、場合によっては 3 回起動されます。私の質問は、[view removeFromSuperview]; を使用するときです。このviewcontrollersビューを削除するには、通知オブザーバーが削除されていますか? viewcontroller クラスの dealloc メソッドでこのメソッドを指定しました