1、向容器加对象
主要指NSMutableArray、NSMutabledictionary。向这两个容器添加nil,会引起崩溃。所以在传入前,需要对传入的内容进行非错判断。
//错误示范NSString *addString = nil;NSMutableArray *mArray = [NSMutableArray array];[mArray addObject:addString];//建议写法NSString *addString = nil;NSMutableArray *mArray = [NSMutableArray array];if (addString != nil) { [mArray addObject:addString]; }else { NSLog(@"xx类xx方法试图向数组mArray传入一个nil"); }
2、从容器取数据
主要指NSArray、NSMutableArray。从array里取数据,要注意防止下标数组越界。
//错误示范NSArray *array = @[@"a", @"b", @"c"];int index = 5NSString *testString = array[index];//建议写法NSArray *array = @[@"a", @"b", @"c"];int index = 5if (index < array.count) { NSString *testString = array[index];}else { NSLog(@"xx类xx方法试图从数组mArray取一个超出count的对象");}
3、调用其他类的方法或不知道要调用的方法当前SDK版本是否支持。需要先判断一下这个方法是否存在。
//错误示范[self.delegate 要调用的方法]; //建议写法if ([self.delegate respondsToSelector:@selector(要调用的方法)]) { [self.delegate 要调用的方法];}
4、定义delegate属性的时候,一定要设置为weak。
//错误示范@property (nonatomic, assign) iddelegate;//建议写法@property (nonatomic, weak) id delegate;