我正在使用UIView
。该应用程序正在使用ARC。 UIView
用于多个视图控制器。在UIView
中添加了UIKeyboardDidHideNotification
的监听器。监听器与某些视图控制器和其他视图控制器一起正常工作,它会使应用程序崩溃。特别是当我在第一个使用后在第二个视图控制器中使用。错误是
* - [appname keyboardWillHide]:发送到解除分配的实例0xb9c2760的消息
在某些情况下,监听器被调用两次。
我在uiview drawrect方法中添加的代码是:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];
侦听器的代码是
-(void)keyboardWillHide
{
if(boolisViewlifted)
{
CGRect newFrame=self.frame;
newFrame=CGRectMake(self.frame.origin.x, self.frame.origin.y+250, self.frame.size.width, self.frame.size.height);
self.frame=newFrame;
boolisViewlifted=false;
}
}
uiview出现在调用视图控制器的顶部。请告诉我导致此错误的原因以及解决方法。
答案 0 :(得分:1)
由于内存警告,您的视图正在卸载。你需要覆盖dealloc方法&删除观察者,查看您添加观察者通知的所有视图中的所有通知。
//do add in all views
-(void)dealloc
{
//[super dealloc];//As you are using ARC don't call super's dealloc
[[NSNotificationCenter defaultCenter] removeObserver:self];
}