OC语言的代码保护
博客专区 > 泊竹 的博客 > 博客详情
OC语言的代码保护
泊竹 发表于4年前
OC语言的代码保护
  • 发表于 4年前
  • 阅读 150
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 为了减少程序崩溃的几率,需要对特定的代码设置一些保护性质的纠错措施。本文记录了几种需要保护的情况。

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 = 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的对象");
}

3、调用其他类的方法或不知道要调用的方法当前SDK版本是否支持。需要先判断一下这个方法是否存在。

//错误示范
[self.delegate 要调用的方法];
    
//建议写法
if ([self.delegate respondsToSelector:@selector(要调用的方法)]) {
        
        [self.delegate 要调用的方法];
}

4、定义delegate属性的时候,一定要设置为weak。

//错误示范
@property (nonatomic, assign)  id <DetailViewDelegate> delegate;

//建议写法
@property (nonatomic, weak)  id <DetailViewDelegate> delegate;






标签: IOS OC 开发经验
共有 人打赏支持
粉丝 91
博文 67
码字总数 13285
×
泊竹
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: