我在 iPhone 6、iOS 8.3 上遇到了一些奇怪的行为。
appVersion 是传入的 NSString* 参数。
NSLog(@"A:%@:%d",appVersion,(int)appVersion.length);
if (!appVersion)
NSLog(@"a");
if (appVersion == 0)
NSLog(@"b");
if (appVersion == nil)
NSLog(@"c");
if (appVersion == NULL)
NSLog(@"d");
if (appVersion == Nil)
NSLog(@"e");
if ([appVersion isEqual:[NSNull null]])
NSLog(@"f");
NSString* av = [NSString stringWithFormat:@"%@",appVersion];
if ([av isEqualToString:@"(null)"])
NSLog(@"g");
if (((int)appVersion) == 0)
NSLog(@"h");
if (appVersion) {
NSLog(@"B:%@:%d",appVersion,(int)appVersion);
params[@"appversion"] = appVersion;
}
应用程序的发布版本返回:
A:(null):0
g
h
B:(null):0
然后崩溃('对象不能为零(键:appversion)')。
调试构建返回:
a
b
c
d
e
g
h
什么是零,但不是零?