1,KVO+通知等 --监听类
必须在dealloc方法中注销监听,否则极其容易崩溃
- (void)dealloc {
[self.currentTask removeObserver:self forKeyPath:@"status" context:nil];
//KVO崩溃,添加监听者必须记得取消监听 否则就崩给你看
[self removeObserverBlocks];
}
2,除法的使用
当被除数为0时,无法计算,那就崩给你看
- (void)dealloc {
self.model.value1/self.model.value2
如果value2==0 崩给你看
}
3,非可变字典和数组
尤其在使用字面量方法来快捷创建时,当value为nil时,崩给你看
NSDictionary *requestDict = @{@"opt" : @2,
@"account" : account,
@"check" : @(check),
@"become" : become};
如果account,become有任何一个为nil,崩给你看
4,富文本
如果string是空,崩给你看
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont kdxTextCellMessageFont],
NSParagraphStyleAttributeName:paragraphStyle,
NSForegroundColorAttributeName:[UIColor kdxTextCellMessageColor]
};
self.contentTextView.attributedText = [[NSAttributedString alloc] initWithString:string attributes:attributes];
string为nil,崩给你看
5,归档 解档
数据解析通过MJExtension 属性int 加了个* 导致崩溃
@property (nonatomic ,assign) int * code;//手贱,多加了个*
6,越界
这个应该是最常见的崩溃问题了
数组越界
NSArray *arr = @[@"1",@"2",@"3",@"4"];
NSString *str = arr[4]; //越界取值
字符串range越界
NSString *string = @"随便的一点文字";
NSString *str =[string substringWithRange:NSMakeRange(0, 10)];
7,调用了没有的方法
这个是最最最常见的崩溃
OC的运行时环境,代码实际运行的时候并非当初指定的类型,调用了实际类型没有的方法必然崩溃;