Hes*_*gid 5 nsnotificationcenter ios
我正在添加一个视图控制器作为UIKeyboardWillShowNotification通知的观察者.
我的代码在我的viewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
在我的dealloc:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Run Code Online (Sandbox Code Playgroud)
即使dealloc在视图控制器关闭时调用,也不会删除观察者.因此,当我第二次打开它时,NSNotificationCenter将尝试通知已发布的旧对象,并且应用程序崩溃.
我在StackOverflow上看到了关于这个特殊问题的几个问题,但没有答案对我有用.
我试过删除观察者viewWillDisappear,viewDidDisappear但同样的问题发生了.
我正在使用ARC.
您是否在 中尝试过这段代码viewWillDisappear?
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Run Code Online (Sandbox Code Playgroud)
从你的解释来看,我认为问题不在于移除观察者。尝试从另一个视图控制器触发观察者。如果没有触发,您就会知道删除成功,并且当您第二次添加观察者时会出现问题。
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |