常见crash
程序员文章站
2024-03-14 23:31:29
...
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 的操作