常见crash

本文深入探讨了编程中常见的导致应用崩溃的问题,包括指针使用不当、数据类型错误、数组越界等,并提供了一系列实用的解决方法与预防措施。文章还强调了对系统API的熟悉、多线程操作、正确处理nil和空值的重要性,以及在使用delegate、Notification和NSTimer时需要注意的事项。通过遵循这些策略,开发者可以显著提高应用的稳定性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 参数的默认值

  • 使用指针 需要做非空判断
  • nil 判断
  • [NSNull null]判断

NSDictionary&&NSArray

  • 代码里面很多地方使用了setObject:forKey以及其它的初始化, 如果插入nil,崩溃
  • AddObject的时候,add nil也会crash
  • objectForKey: 类型错误

数据类型错误

简单判断dictionary和array不为空,里面实际没有数据。后端的返回的数据 对类型做判断,dictionary、array

数组越界

  • objectAtIndex 取值的时候一定要做数组大小判断,防止越界取值。涉及index的时候,最好都做检查

substringWithRange/substringFromIndex/substringToIndex

涉及range的操作都需要做一下NSString长度的判断

textView.text = [textView.text substringWithRange:NSMakeRange(0, 100)];

使用delegate,Notification NSTimer 没有取消

使用delegate,Notification,NSTimer后,不使用了要注意取消掉,经常出现controller已经销毁,回调回来造成崩溃。

项目圈子、navigation delegate、collectionview 、tableview

使用不熟悉的api的时候

系统api自己不熟悉的时候,看一下api支持的最低版本,高版本的api在低版本使用的时候,会造成崩溃。

多线程操作

明确函数的生命周期,动画结束,block的使用,多线程读写,多线程函数的使用。

遍历数组的同时,又改变了数组的顺序

 

enumerateObjectsUsingBlock遍历的时候 exchangeObjectAtIndex:withObjectAtIndex insert del 的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值