为什么在发送NSNotification时将sender设置为nil

时间:2014-07-13 05:55:58

标签: ios objective-c ios7 nsnotificationcenter

我看到很多人,包括教科书,发送通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"someNotification" object:nil userInfo:data];

为什么他们更喜欢这种形式而不是以下?

[[NSNotificationCenter defaultCenter] postNotificationName:@"someNotification" object:self userInfo:data];

指定发件人是否以某种负面方式影响接收者?我想指定发件人是最好的做法。

2 个答案:

答案 0 :(得分:1)

当您将sender设置为nil时,表示您发布了“常规”通知,这可以代表发布此通知的所有对象。从订户端想一想;当您从某个对象请求通知时,它会将其范围限定为仅由该对象发布的对象。如果您在订阅时将object设置为nil,则无论对象如何,您都会收到所有someNotification

答案 1 :(得分:0)

您可以将任何对象作为通知对象传递,但约定是该对象是“正在进行通知的对象”。如果你将nil传递给object,那么它不会伤害任何东西,但是obeserver不会识别当前对象。在发布多个通知时需要Self,在这种情况下,观察者需要知道当前对象。