iOS 中NSNotificationCenter的回调函数不执

2017-12-08  本文已影响0人  playboy

今天发现在项目中抛出NSNotificationCenter的事件,一直执行不到回调函数。经过一番排查,发现原来是在注册时添加了Object参数,发送时,却没有填充Object参数。被坑了良久,在次记录一下。

代码简略如下:

@implementation TWGroupChatViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:"NOTIFICATION_TEST" object:self];

}

-(void)test:(NSNotification*)notification

{

}

@end

在其他地方调用的代码:

[[NSNotificationCenter defaultCenter] postNotificationName:"NOTIFICATION_TEST" object:nil userInfo:nil];

问题所在:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:"NOTIFICATION_TEST" object:self];这里的object参数传入了self,但是发出通知的地方,object参数却传入了nil,两者不一致,导致注册的函数不被调用。

改正方法:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:"NOTIFICATION_TEST" object:nil];

添加事件时,将object参数传入nil即可。

上一篇 下一篇

猜你喜欢

热点阅读