1、NSString *str = @"";该语句代表是一个空串,并且不为nil,占有内存空间
2、NSString *str = nil;该语句代表,str不指向任何对象,指针指向空
3、当str为nil时,不能使用isEqualTo方法,该方法对nil返回为0值,也就是你拿不到一个准确的结果
4、当判断为nil时,直接使用if(!str)即可
下面是代码验证:
NSString *str = @"";
NSString *str2 = nil;
NSLog(@"str:%@",str);
NSLog(@"str2:%@",str2);
if (!str) {
NSLog(@"str is nil");
}else {
NSLog(@"str is not a nil");
}
if (!str2) {
NSLog(@"str2 is nil");
}else {
NSLog(@"str2 is not a nil");
}
if ([str2 isEqual:nil]) {
NSLog(@"str2 is nil");
}else {
NSLog(@"str2 is not a nil");
}
2016-07-15 11:38:07.068 tex0715[13215:2795643] str:
2016-07-15 11:38:07.069 tex0715[13215:2795643] str2:(null)
2016-07-15 11:38:07.069 tex0715[13215:2795643] str is not a nil
2016-07-15 11:38:07.069 tex0715[13215:2795643] str2 is nil
2016-07-15 11:38:07.069 tex0715[13215:2795643] str2 is not a nil