我正在使用此代码来实现NSNotification
侦听器:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addUserItemNotification:) name:kFinishFillUserDetails object:nil];
}
return self;
}
我如何删除它:
-(void)viewDidUnload {
[super viewDidUnload];
[[NSNotificationCenter defaultCenter] removeObserver:self name:kFinishFillUserDetails object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
这就是我所说的:
[[NSNotificationCenter defaultCenter] postNotificationName:kFinishFillUserDetails object:nil userInfo:dic];
我有这个问题:
如果我创建了viewcontroller并将其添加到UINavigationController
然后从UINavigationController
中删除它,然后创建另一个相同类型的控制器并将其添加到UINavigationController
,然后NSNotification
两次召唤,不仅一次。
知道为什么会这样吗?
这是我创建UIViewController
:
UsersViewController *usersVC = [[[UsersViewController alloc]initWithNibName:@"UsersViewController" bundle:nil] autorelease];
[[self navigationController] pushViewController:usersVC animated:NO];
答案 0 :(得分:1)
viewDidUnload
已被弃用,在视图控制器生命周期中不再调用它。
尝试将注销代码移至dealloc
。
答案 1 :(得分:0)
Gabriele Petronella有权利。不推荐使用viewDidUnload。我发现注册/取消注册NSNotifications时使用的最佳模式分别位于viewWillAppear:animated / viewWillDisappear:animated中。