【发布时间】:2015-11-10 16:00:29
【问题描述】:
我有这个viewDidLoad 代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(messageReceived:)
name:@"messageReceived"
object:nil];
}
此视图控制器是UITabBarController 之一。每次我转到它的选项卡时,都会调用viewDidLoad,但似乎[[NSNotificationCenter defaultCenter] removeObserver:self]; 什么都不做,并且每次调用该方法时都会注册“messageReceived”。
此代码 sn-p 来自另一个通知的类:
[[NSNotificationCenter defaultCenter] postNotificationName:@"messageReceived"
object:nil
userInfo:nil];
只被调用一次,但是,例如,如果我转到正在观察的视图控制器的选项卡 3 次,并且 viewDidLoad 被调用 3 次,那么它的 messageReceived: 方法也被调用 3 次。 .
我可能会错过什么?
【问题讨论】:
标签: ios uiviewcontroller uitabbarcontroller observer-pattern nsnotificationcenter