はい、通知はそれを行うための良い方法です。また、モデルがコントローラー [つまり、ViewController] を更新したい場合、通知はそれを行う良い方法です。私の場合、SSDP (AsyncUdpSocket を使用) を使用してデバイスを検出しようとしていますが、デバイスが見つかったときにビュー コントローラーを更新/通知したいと考えていました。これは非同期なので、データを受信するときは通知を使用しました。これが私がした簡単なことです:
viewDidLoad で (init をオーバーライドしようとしましたが、うまくいきませんでした) - 次のように通知用に ViewController を登録しました。
*NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(foundController:)
name:@"DiscoveredController"
object:nil];
私のViewControllerのセレクターは次のとおりです。
// receive the notification
- (void)foundController:(NSNotification *)note
{
self.controllerFoundStatus.text = @"We found a controller";
}
私の「モデル」[App Delegateではありません-デバイス「serviceSSDP」を検出するために使用する新しいクラスを作成しました。次のように通知を投稿するだけでした:
[[NSNotificationCenter defaultCenter] postNotificationName:@"DiscoveredController" object:nil];
それでおしまい。この通知の投稿は、SSDP の発見に対して正しい応答が得られたときに行われます [具体的には:
- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock
didReceiveData:(NSData *)data
withTag:(long)tag
fromHost:(NSString *)host
port:(UInt16)port
AsyncUdpSocket の。