1.
nil:指向一个对象的空指针
针对(null)这种情况
if(result==nil) {
NSLog(@"执行");
}
针对<null>的情况
if
([result isEqual:[NSNUll null]]) {
NSLog(@"执行");
}
2.Nil:
指向一个类的空指针
Class someClass = Nil;
3.
NULL:指向其他类型(如:基本类型、C类型)的空指针
例:
|
int *pointerToInt = NULL;
char *pointerToChar = NULL;
|
4.
NSNull
集合中值为空的对象
例子说明:
// 因为 nil 被用来用为集合结束的标志,所以 nil 不能存储在 Foundation 集合里。
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
// 错误的使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];
// 正确的使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];
例子 CRASH: -[NSNull length]: unrecognized selector sent to instance错误的处理办法
开发中从后台请求数据,返回如下:
2014-12-05 16:44:52.535 掌麦[6984:613] getDefaultAddress: reuslt == {
item = {
data = {
address = "<null>";
area = "<null>";
city = "<null>";
name = "";
phone = 18503051318;
province = "<null>";
};
mark = 1;
msg = "\U6210\U529f";
};
status = 1;
}
item = {
data = {
address = "<null>";
area = "<null>";
city = "<null>";
name = "";
phone = 18503051318;
province = "<null>";
};
mark = 1;
msg = "\U6210\U529f";
};
status = 1;
}
我直接解析出字典dic,赋值:
NSString
*address = [dic objectForKey:
@"address
"];
NSString
*name = [dic objectForKey:
@"name
"];
NSString
*phone = [dic objectForKey:
@"phone
"];
self.addressLabel.text = address;
self.nameLabel.text = name;
self.phoneLabel.text = phone;
结果报错:CRASH: -[NSNull length]: unrecognized selector sent to instance
原因及时后台返回有些值为null,在object-c中就是nsull的空值
所以解析后,应加一判断,防止出错
if (![address
isKindOfClass:[NSNull
class]]) {
self.addressLabel.text = address;
}
if (![name
isKindOfClass:[NSNull
class]]) {
self.nameLabel.text = name;
}
if (![phone
isKindOfClass:[NSNull
class]]) {
self.phoneLabel.text = phone;
}
这样就OK了