这里有一个引起“关注”的...
我有一个使用键盘的模态视图控制器。我正在使用一个系统从stackoverflow上的代码中解除键盘,这似乎是识别键盘外的点击以解除它的“新方法”......
// Register for keyboard dismissal
[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillShowNotification object:nil queue:nil usingBlock:^(NSNotification *notification)
{
UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)]autorelease];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
tap.delegate = self;
[self.view addGestureRecognizer:tap];
}];
[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillHideNotification object:nil queue:nil usingBlock:^(NSNotification *notification)
{
[self.view removeGestureRecognizer:[self.view.gestureRecognizers lastObject]];
}];
这很好用,但我注意到当我通过“完成”按钮将其关闭时,我的视图控制器上没有调用 dealloc。
这似乎与上面的代码有关。如果我注释掉通知定义大括号中的可执行代码,那么当控制器被解除时,dealloc 被调用 ok....(键盘未显示或解除,因此大括号内的代码未执行)
有没有人对为什么在实现上述代码时不调用 dealloc 有任何建议?
谢谢
适合