問題タブ [nsnotificationcenter]

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 投票する
4 に答える
18402 参照

iphone - メインスレッドのNSOperationとNSNotificationCenter

NSOperationがあります。終了したら、NSNotificationCenterを起動して、NSoperationが終了したことをプログラムに通知し、GUIを更新します。

私の理解では、NSOperationはメインスレッド上にないため、NSNotificationのリスナーはメインスレッド上で実行されません。

イベントを起動したときにリスナーがメインスレッドで実行されるようにするにはどうすればよいですか?

0 投票する
7 に答える
26506 参照

iphone - postNotificationName: が呼び出されたときに NSNotification が送信されない

andを使用NSNotificationCenterして1 つのインスタンスを取得しようとしていますが、なぜ機能しないのかわかりません。addObserverpostNotificationName

オブザーバーを追加し、2 つの異なるクラスでメッセージを送信するには、2 行のコードを記述します。

名前を設定すると、nilそれは単なるブロードキャストであるため、正常に機能します。通知名を定義しようとすると、メッセージが通過しません。

0 投票する
6 に答える
404578 参照

ios - Objective-CのNSNotificationCenterを介してメッセージを送受信しますか?

NSNotificationCenterObjective-Cでメッセージを送受信しようとしています。しかし、私はこれを行う方法の例を見つけることができませんでした。どのようにメッセージを送受信しますNSNotificationCenterか?

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

objective-c - Objective-C で NSNotificationCenter を介してイベントを送受信するクラスを作成する方法は?

2 つのクラスを作成する必要があり、どちらも NSNotificationCenter メソッドを介してイベントを送受信できる必要があります。つまり、両方に sendEvent メソッドと receiveEvent メソッドが必要です。

そのような別のクラスと同じように、ClassB もイベントを送受信できる必要があります。どうすればそれができますか?

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

iphone - NSNotification 対デリゲート プロトコル?

基本的にAPIから情報を取得するiPhoneアプリケーションがあります(XMLで、最終的にはJSONである可能性があります)。結果オブジェクトは通常、View Controller (主にテーブル) に表示されます。

これが現在のアーキテクチャです。

リモートサーバーからさまざまなオブジェクトを取得する NSOperation クラスがあります。これらの NSOperation クラスのそれぞれは、解析された結果のオブジェクトを起動するカスタム デリゲート メソッドを受け取り、最後に結果が得られなくなったときにメソッドを受け取ります。したがって、デリゲートのプロトコルは次のようになります。

解決策はうまくいくと思いますが、デリゲート プロトコルがたくさんあることになり、ビュー コントローラーはこれらすべてのデリゲート メソッドを実装する必要があります。悪くはないと思いますが、より良いデザインを常に探しています。

そこで、デリゲートの使用を削除するために NSNotifications を使用することを考えています。通知の userInfo 部分にオブジェクトを含めて、オブジェクトを受信したとおりに投稿し、それ以上利用できない場合は最終イベントを投稿することができます。そうすれば、1 つのコントローラーで複数のオブジェクトを使用する場合でも、各ビュー コントローラーに 1 つのメソッドを配置するだけで、すべてのデータを受け取ることができます。†</p>

それで、誰かが各アプローチの長所/短所を私と共有できますか. デリゲートではなくイベントを使用するようにコードをリファクタリングすることを検討する必要がありますか? 特定の状況では、一方が他方よりも優れていますか? 私のシナリオでは、複数の場所で通知を受け取るつもりはないので、プロトコルベースのデリゲートが適しているかもしれません。

ありがとう!

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

iphone - 通知が認識されない

あまり成功せずに通知を投稿しようとしています! 問題なくキーボードで問題なく実行できますが、次のようにカスタムキーボードを試しています:

私のルートビューにはこれがあります

.h

.m

しかし、allowEdits が呼び出されることはありませんか?

0 投票する
3 に答える
20016 参照

iphone - NSNotifications を投稿および受信する方法 (目的 C) | 通知 (Swift で)?

NSNotification を送信する簡単なパターンはありますか (Objective C) | 通知 (Swift) とそれを受け取る方法は? コードスニペット?ドキュメントは、トピックについて150ページのように書いています。簡単な例を見てみたい。

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

iphone - iPhone-別のクラスからセレクターを起動する

「プロパティ」と呼ばれる他のクラスの1つから、「WriteIt_MobileAppDelegate」と呼ばれる別のクラスにあるテーブルビューをリロードしたいと思います。NSNotificationCenterクラスを介してこれを実行しようとしました。ログは呼び出されますが、テーブルは更新されません。

Properties.h:

WriteIt_MobileAppDelegate.m

-(void)awakeFromNib {

[[NSNotificationCenter defaultCenter] addObserver:selfセレクター:@selector(reloadItProperties :) name:@ "NameChanged" object:self];

}

私はここで何が間違っているのですか?

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

iphone - UITableView コンテンツの無効化

複数の UITableViewControllers を持つアプリケーションがあります。これで、ユーザーは「データ ソース」を変更できるようになりました。その場合、関連する UITableViews のデータを無効化 (リセット) する必要があります。

NSNotificationCenter を使用して、これらのコントローラーをオブザーバーとして、データ ソースが変更されたときに生成されるイベントに追加できることがわかりました。

問題は、基になるテーブルをどのようにリセットするかです。もちろん、ブール値のフラグを設定して、viewWillAppear または viewDidAppear で UITableView:reloadData を呼び出すこともできますが、よりクリーンな方法があるかどうか疑問に思っていました。

あるいは、要点を完全に見逃しており、NSNotificationCenter はまったく必要ないのかもしれません。事前にどうもありがとうございました。

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

iphone - NSNotificationセンターが-objectに応答しない可能性がありますか?

iPhoneアプリケーション内のNSNotificationセンターを簡単に利用しようとしていますが、この場合は何か問題があるようです。特定のメッセージに関連付けられたオブジェクト、または少なくともオブジェクトへの参照を取得できるという印象を受けましたが、次のサンプルコードを使用すると、警告が表示されます。

「NSNotificationセンターが-objectに応答しない可能性があります」

実際、コードをコンパイルして実行すると、基本的に、オブジェクトのコンテンツに対して何もしようとはしませんが、実際には実行されません。単に無視されます。

郵便番号は次のとおりです。

ブックマークオブジェクト自体は単なる辞書です。また、「userInfo」引数を使用してブックマークオブジェクトを渡してみましたが、結果は同じでした。

これをどのように行うべきですか?私は何が間違っているのですか?