一、向容器加對象
數組
主要指NSMutableArray、NSMutabledictionary。向這兩個容器添加nil,會引發崩潰。因此在傳入前,須要對傳入的內容進行非錯判斷。atom
//錯誤示範 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"); }
二、從容器取數據spa
主要指NSArray、NSMutableArray。從array裏取數據,要注意防止下標數組越界。code
//錯誤示範 NSArray *array = @[@"a", @"b", @"c"]; int index = 5 NSString *testString = array[index]; //建議寫法 NSArray *array = @[@"a", @"b", @"c"]; int index = 5 if (index < array.count) { NSString *testString = array[index]; }else { NSLog(@"xx類xx方法試圖從數組mArray取一個超出count的對象"); }
三、調用其餘類的方法或不知道要調用的方法當前SDK版本是否支持。須要先判斷一下這個方法是否存在。
對象
//錯誤示範 [self.delegate 要調用的方法]; //建議寫法 if ([self.delegate respondsToSelector:@selector(要調用的方法)]) { [self.delegate 要調用的方法]; }
四、定義delegate屬性的時候,必定要設置爲weak。
io
//錯誤示範 @property (nonatomic, assign) id <DetailViewDelegate> delegate; //建議寫法 @property (nonatomic, weak) id <DetailViewDelegate> delegate;