码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 8:NSNull在NSUerDefaults判空处理中无效

时间:2014-12-31 12:54:07      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

关键字: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;
}

技术分享 

 

iOS 8:NSNull在NSUerDefaults判空处理中无效

标签:

原文地址:http://www.cnblogs.com/michaellfx/p/4195336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!