NSNotificationCenter一个帖子会导致观察者被调用两次

xon*_*rlz 10 iphone objective-c ipad ios

我有以下代码:

 [[NSNotificationCenter defaultCenter] postNotificationName:kNewsfeedFetchCompleted object:self userInfo:userinfo];
Run Code Online (Sandbox Code Playgroud)

只有这一点,没有其他地方.以下是我设置观察者的方法:

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(newsfeedFetchCompleted:) name:kNewsfeedFetchCompleted object:nil];
Run Code Online (Sandbox Code Playgroud)

问题是当我做一个帖子时,newsfeedFetchCompleted被调用了两次..这怎么可能呢?

Apu*_*urv 24

当您的addObserver代码执行两次时,这是可能的.通知功能将在注册时多次调用.

因此,请确保添加观察者的代码仅执行一次.因此,您可以将其保存在viewDidLoad或init方法中.

如果要将它放在viewWillAppear中,则在viewWillDisAppear中删除observer.


jan*_*del 8

在添加观察者之前,请确保删除之前添加的观察者.

[[NSNotificationCenter defaultCenter]removeObserver:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(newsfeedFetchCompleted:) name:kNewsfeedFetchCompleted object:nil];
Run Code Online (Sandbox Code Playgroud)