NSString * a = @"";
我已经使用了这个空(或默认)字符串,并尝试检查它是否等于nil,Nil或NULL,但它返回NO。任何人都可以详细解释我
if ([a isEqual:NULL]) {
NSLog(@"Yes");
} else {
NSLog(@"No");
}
if ([a isEqual:nil]) {
NSLog(@"Yes");
} else {
NSLog(@"No");
}
if ([a isEqual:Nil]) {
NSLog(@"Yes");
} else {
NSLog(@"No");
}
答案 0 :(得分:0)
这段代码NSString * a = @"";
创建了一个新的NSString。它与使用[[NSString alloc] init]
完全相同。
如果你想要nil,你必须这样做NSString* a = nil
。
在Objective-C中,nil用于创建指向任何内容的指针,因此不要使用Nil的NULL。如果你没有关于nil / Nil / NULL的更多信息this article解释了这一切。
编辑在第一条评论中回答问题:
NSString *fileName = nil;
NSLog(@"%@",[fileName isEqual:nil]?@"S":@"N");
NSLog(@"%@",[fileName isEqualTo:nil]?@"S":@"N");
NSLog(@"%@",[fileName isEqualToString:nil]?@"S":@"N");
在所有这些情况下,您的NSString都是零。在objective-C中,允许在nil对象上使用方法,但它总是返回默认值,对于布尔类型为0,该值为0。这就是为什么你总是得到'N'。在这种情况下有点奇怪,因为你将nil与nil进行比较,但事实就是如此。这个post更详细一点
如果你想检查对象是否为零,请执行以下操作:
if (filename) {
// Do something with filename
} else {
// filename is nil
}