在这种情况下,您并不想使用委托。您希望多个对象监听特定事件,因此请NSNotificationCenter
改用。
当您的解析器完成解析 JSON 时,请执行以下操作:
[[NSNotificationCenter defaultCenter] postNotificationName: @"FinishedDataParsing" object:self userInfo:nil;
这样你也不需要全局变量。您可以在解析器对象中使解析的数据可访问,也可以使用 userInfo 字典将一些信息传递给通知接收器。
当你的解析完成时,你想在任何地方做某事,你首先必须注册为观察者(你可以在 中做到这一点viewDidLoad
):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataParsed:)
name:@"FinishedDataParsing"
object:nil];
显然你必须实现你的回调方法来对你解析的数据做任何你想做的事情。
- (void)dataParsed:(NSNotification *)notification {
// Do this to access the user info.
NSDictionary *userInfo = notification.userInfo;
// Or access your data parser object.
DataParser *parser = (DataParser *)notification.object;
}
此外,当您不再需要收到通知时(例如 in dealloc
) ,您应该取消注册为观察者
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}