問題タブ [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.
iphone - キーボードが表示されたときに「認識されないセレクターがインスタンスに送信されました」
アプリ画面のテキストフィールドをクリックしてキーボードが表示されると、xcodeデバッガーに次のエラーが表示されます。
mainViewControllerのviewDidLoadメソッドで、次のようなregisterForKeyboardNotificationsメソッドを呼び出しています。
[自己registerForKeyboardNotifications];
(mainViewController.mでの)実装は次のとおりです。
何が間違っている可能性がありますか?
objective-c - 型付きプロパティを追加したい場合、NSNotification のサブクラス化は正しいルートですか?
サブクラス化しようとしていNSNotification
ます。
Apple のドキュメントにはNSNotification
、次のように記載されています。
NSNotification
インスタンス変数のないクラス クラスタです。そのため、プリミティブ メソッド、、および をサブクラス化NSNotification
し、オーバーライド する必要があります。任意の指定イニシャライザを選択できますが、イニシャライザが (経由で)の の実装を呼び出さないことを確認してください。 直接インスタンス化することを意図しておらず、その メソッドは例外を発生させます。name
object
userInfo
NSNotification
init
[super init]
NSNotification
init
しかし、これは私には明らかではありません。このような初期化子を作成する必要がありますか?
objective-c - NSNotificationのテストタイプ
オブジェクトがNSNotificationであるかどうかを確認する必要があります。それがNSNotificationであるか、NSNotificationのサブクラスであるかを区別したいので、それがサブクラスであるかどうかを知るだけでは十分ではありません。
したがって、詳しく説明するには、次のことを区別する必要があります。
- NSConcreteNotification
- NSNotificationのサブクラス(ただし、NSConcreteNotificationではありません)
問題は、NSNotificationsが実際にはNSConcreteNotificationsであり、NSConcreteNotificationがプライベートクラスであるため、テストに使用できないことです。
protocols - NSNotification のプロトコルを強制する
基本モデル オブジェクト、特定のモデル オブジェクト (例として generalStatus)、genericXML getter オブジェクトの 3 つのオブジェクトで構成されるモデルがあります。ゲッター オブジェクトがモデルに渡されるので、ネットワークなしでテスト ケースを実行できます。データを取得してビューを更新するモデルごとに特定のコントローラー (例としては genstatusController) があります。低レベルの genericXML getter はネットワーク作業に ASIHttp を使用し、実行ループがあり、アクティビティは非同期です。特定のモデルには genericXML ゲッターがあり、ゲッターを呼び出して XML ドキュメントを更新します。多くの上位モデルがあり、すべてが同じ基本モデルと共通の XML ゲッター オブジェクトを使用しています。genericXML getter は、xml データを更新する非同期リクエストを完了すると、モデルに NSNotification をポストします。次に、モデルは XML を解析し、コントローラーに NSNotification を送信して、データが更新されたことを知らせます。基本オブジェクトと特定のモデルの間にいくつかのプロトコルがあります。このレベルの適用が気に入っています。オブジェクトのセット間で NSNotification を適用する方法はありますか?
ところで、コントローラーはデータの更新を呼び出しますが、モデルからの非同期イベントを待機して、ビューを更新できるように更新が完了したことを通知する必要があります。
objective-c - NSNotification を使用してループを中断する
ループのあるメソッドを含むクラスがあります。特定のイベント (ボタンの押下など) が発生した場合、ループを中断できる必要があります。
NSNotificationCenter
ボタンが押されたときにループを含むクラスに通知するために を使用しています。
ただし、ループの実行中にボタンを押すと、ループを中断するのではなく、ループが完了した後に通知が発生します。
これは、同じスレッドで動作しているためだと思います。
NSNotificationCenter
では、バックグラウンド/別のスレッドで動作させるにはどうすればよいですか? これは可能ですか?または、それを行うより良い方法はありますか?
iphone - iOS NSNotification - 一時停止から抜け出すときに安全に無視する方法
作業中のアプリがサスペンド モードから抜け出すときに、アプリがサスペンドされている間に iOS が保存した通知にアプリが応答しないようにする必要がある場合があります。応答コードが実行されないことを確認できるこのキャンセルを実行する適切な場所はどこですか?
removeObserver is applicationWillEnterForeground を配置するとうまくいくことを願っていますが、NSNotification doc でこれについて何も見つけることができませんでした。
編集:シナリオの詳細を追加させてください:
私が取り組んでいるアプリは、次の 7 日間のカレンダー イベントの変更をチェックします。次の 2 回でデータを更新します (eventStore を再クエリします)。 1. iPhone カレンダーから変更に関する NSNotification が送信されたとき。2. 7 日間の範囲が変更されたため、アプリが初めて新しい日にできるようになりました。
私が抱えている設計上の課題は、両方のシナリオが同時に当てはまる場合です (アプリが一時停止から戻り、新しい日になり、アプリが一時停止している間にカレンダー イベントが変更されました)。その場合、イベント ストアを 1 回だけ再クエリします。私の考えでは、applicationWillEnterForeground で、それがその日の最初の起動である場合は、アプリに通知を無視またはドロップするように指示します。この場合に NSNotifications がどのように機能するかについての私の仮定が外れている可能性があるという印象を受けています。どんなガイダンスも素晴らしいでしょう!
ios - 終了した NSNotification と中断されたアプリ
アプリが中断されている間に終了することを決定したアプリの通知をiosはどのように処理しますか? 私の理解では、中断されたアプリは警告を受けないため、オブザーバー自体を削除することはできません。
objective-c - NSNotificationとNSThread
NSThreadを使用して別のスレッドにオブジェクトを作成します。
そのオブジェクトはイベントを待機します。そのイベントが発生すると、デフォルトの通知センターに通知が投稿されます。
私のAppControllerはその通知を監視し、セレクターを実行します。
質問:セレクターのメソッド(myMethod :)は、メインスレッドで実行されますか、それとも上からのスレッド(myThread)で実行されますか?
iphone - nsnotificationcenter メソッドが複数回起動されました
私はviewcontrollerを持っています。その中にnsnotificationオブザーバーがあります。別のビューコントローラーから通知を投稿していますが、nsnotification オブザーバー セレクターが 2 回、場合によっては 3 回起動されます。私の質問は、[view removeFromSuperview]; を使用するときです。このviewcontrollersビューを削除するには、通知オブザーバーが削除されていますか? viewcontroller クラスの dealloc メソッドでこのメソッドを指定しました