iOS 8:NSNull在NSUerDefaults判空处理中无效
关键字:NSUserDefaults NSNull Nil
最近在某份代码中看到如下写法:
1 NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; 2 3 NSString *count = [user objectForKey:@"count"]; 4 NSString *pass = [user objectForKey:@"pass"]; 5 6 if((NSNull*)count == [NSNull null])//判空,当count是null的时候,就会进if,防崩,因为如果是空,还要用,就可能会崩 7 { 8 return; 9 }
经实验,并未得出代码注释中的结果。首次运行此代码,则count、pass都为nil。(NSNull *)count
转换后,还是nil,再与[NSNull null]做==运算,结果为false,达不到防御编程目的。调试代码及结果如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSString *hello = [[NSUserDefaults standardUserDefaults] valueForKey:@"hello"]; if((NSNull*)hello == [NSNull null])//判空,当count是null的时候,就会进if,防崩,因为如果是空,还要用,就可能会崩 { return YES; } return YES; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。