我看到很多人,包括教科书,发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"someNotification" object:nil userInfo:data];
为什么他们更喜欢这种形式而不是以下?
[[NSNotificationCenter defaultCenter] postNotificationName:@"someNotification" object:self userInfo:data];
指定发件人是否以某种负面方式影响接收者?我想指定发件人是最好的做法。
答案 0 :(得分:1)
当您将sender
设置为nil
时,表示您发布了“常规”通知,这可以代表发布此通知的所有对象。从订户端想一想;当您从某个对象请求通知时,它会将其范围限定为仅由该对象发布的对象。如果您在订阅时将object
设置为nil
,则无论对象如何,您都会收到所有someNotification
。
答案 1 :(得分:0)
您可以将任何对象作为通知对象传递,但约定是该对象是“正在进行通知的对象”。如果你将nil传递给object,那么它不会伤害任何东西,但是obeserver不会识别当前对象。在发布多个通知时需要Self,在这种情况下,观察者需要知道当前对象。