NSNotificationService仅在我通知全局时才起作用

时间:2012-11-21 17:08:44

标签: objective-c ios nsnotificationcenter

我的设置很简单。

我有'TripService'和'TripViewController'。当旅行服务中的某些内容发生变化时,例如应该触发通知的距离,以便通知任何感兴趣的人,在这种情况下是视图控制器。

当我触发绑定到对象的通知时会出现问题,所以我把:

[NSNotification notificationWithName:TRIPSERVICEDISTANCECHANGE 
                              object:self 
                            userInfo:distanceInfo];

并用

收听
[notificationCenter addObserver:self
                       selector:@selector(distanceChanged:)
                           name:TRIPSERVICEDISTANCECHANGE
                         object:self.tripRecorder];

在这种情况下,我会触发它,但是任何distanceChanged都不会被触发。

如果我用nil替换两个'object'值,那么这就行了。

奇怪的是,如果我在调试模式下运行应用程序并逐步执行代码,这样可以正常工作。

1 个答案:

答案 0 :(得分:0)

在代码中:

[notificationCenter addObserver:self
                   selector:@selector(distanceChanged:)
                       name:TRIPSERVICEDISTANCECHANGE
                     object:self.tripRecorder];

论点: object:self.tripRecorder告知通知中心仅向TRIPSERVICEDISTANCECHANGE发送self来自self.tripRecorder的{​​{1}}通知。如果在object:设置为nil时传递通知,则会告诉我self.tripRecorder可能不是发送通知的对象。但是,如果您使用调试器逐步执行该程序,您还会说该代码有效。这听起来像是对象生命周期问题(通知对象在通知中心处理/传递通知之前被销毁)。 notificationWithName:返回一个自动释放的对象,该对象是否可能在创建它的方法的末尾被释放?