iOS crash 总结


1、ARC中,对于调用私有函数调用中,返回值是void 或者参数本身是基本类型的,如果使用了id,因为ARC中会对参数和返回值进行retain,所以都会产生objc_retain的crash。 delloc函数是异步的:当对对象调用release的时候,即使该对象的retaincount = 0, 该对象的delloc函数也不是同步调用的。 例子:UIWebViewWk的destory函数的原因。 

2、通用的情景是:观察者使用的时候。 A->B->C A做为B的观察者向下传递,B中的C会回调到A中方法。 传统的A的delloc方法中销毁B,B的delloc方法中销毁C。在OC中由于 对象release之后,delloc方法是异步调用的,A delloc之后,B的retainCount = 0,但是当B的delloc函数还没有 调用的时候,C发生回调,就会因为A的野指针crash。 这个时候就要实现B的destory方法来销毁C。 这个destory方法在A的delloc方法中进行调用。这样就保证了A delloc的时候C也delloc了。 

3、docmentView上面加入手势,网页内容发生改变,如页内的视频跳转之后,手势发生crash. 

4、panGesture手势没有调用touchMove,而初始化的代码放在了touchMove中,导致变量没有初始化,成为了野指针

 5、属性对象没有retain,delloc的时候crash. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值