是的,通知是一个很好的方法。而当模型想要更新控制器 [即 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";
}
在我的“模型”[不是应用程序委托中-我创建了一个新类,用于发现设备“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 的。