ios- nil NULL 和 NSNull

因为objective-c的集合对象,比如nsarray, nsdictionary, nsset等,都有可能包含nsnull对象,所以,如果以下代码中的item为nsnull,则会引起程序崩溃。

NSString *item = [NSArray objectAtIndex:i];

if ([item isEqualToString:@"TestNumber"]){

//

}

常见的错误还有release的对象没有设置为nil,从而引起程序崩溃

id someObject = [[Object alloc] init];

//

[someObject release];

//

if (someObject){

//crash here

}

nil用来给对象赋值,NULL 则给任何指针赋值,NULL和nill不能互换,nil用于类指针赋值(在objective-c中类是一个对象),而NSNull则是用于集合操作,虽然他们表示的都是空值,但是使用的场合完全不同。所以在编码时要严格按照变量类型来赋值,将正确的空值赋值给正确的类型,使代码易于阅读和维护,也不容易引起错误。

//判断对象不为空

if (object) {}

//判断对象为空

if (object == nil) {}

//数组初始化,空值结束

NSArray *pageNames = [NSArray alloc] initWithObjects:@"DocumentList", @"AdvancedSearch", @"Statistics", nil];

//判断数组和字典元素是否为空

UIViewController *controller = [NSArray objectAtIndex:i];

if((NSNull *)controller == [NSNull null]){//}

 

NSString *userId = [NSDictionary objectForKey:@"UserID"];

if(userId == [NSNull null]){//}

在objective c中当发送消息给nil对象时,系统返回0而不是引起崩溃。

 

转载于:https://www.cnblogs.com/lisa090818/p/3312314.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值