您的位置:首页 > 其它

ARC模式下,程序闪退原因

2015-08-04 09:35 253 查看
目前做项目运用的都是ARC模式,虽然系统会自动回收内存,但是在某些释放不当的情况下,项目还是会出现闪退的情况。以下是我自己遇到的一些情况。

1 delegate属性的描述词使用的是assign,或者是strong会造成闪退,应该使用weak

2 如果使用了通知,例如:

[[NSNotificationCenter
defaultCenter] addObserver:self
selector:@selector(hideKeyboard)
name:UIKeyboardWillHideNotification
object:nil];那么在
- (void)dealloc方法中必须移除掉该通知, 
 [[NSNotificationCenter
defaultCenter]removeObserver:self
name:UIKeyboardWillHideNotification
object:nil];

3 增加了观察者例如:
 [self
addObserver:self
forKeyPath:@"contentSize"
options:NSKeyValueObservingOptionNew
context:nil]; 那么在dealloc中也必须要移除该观察者。

- (void)dealloc
{
    [self
removeObserver:self
forKeyPath:@"contentSize"];
}

4 键盘弹出的情况,在tableviewcell中,需要弹出键盘,然后cell需要有一定的滚动,如果cell没有重用的话,也可能造成闪退。cell的contentView中的subview一般我是存放在dictionary中,以indexPath作为key值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息