【问题标题】:what does [[NSUserDefaults standardUserDefaults ] objectForKey] return?[[NSUserDefaults standardUserDefaults] objectForKey] 返回什么?
【发布时间】:2018-12-06 04:00:24
【问题描述】:

如果我这样做

NSArray * myArray = [[NSArray alloc] init];
myArray = [[NSUserdefaults standardUserDefaults] objectForKey:@"array"];
[myArray release]; 

我是否正在销毁存储在 NSUserDefaults 中的值以获取密钥 @"array"?它仍然可以提取吗? [[NSUserdefaults standardUserDefaults] objectForKey:@"array"];return是指针还是值?

【问题讨论】:

    标签: objective-c nsuserdefaults


    【解决方案1】:

    您对 objectForKey 的调用将返回一个自动释放的数组。

    不要做 alloc/init 或 release 事情。你会泄漏,很可能会崩溃。

    只要做:

    NSArray * myArray = [[NSUserDefaults standardUserDefaults] objectForKey: @"array"];
    

    【讨论】:

      【解决方案2】:

      我是否正在销毁存储在 NSUserDefaults 中键 @"array" 的值?

      它是否仍然可以提取?

      可提取

      是否 [[NSUserdefaults standardUserDefaults] objectForKey:@"array"];返回指针还是值?

      指针。返回指向对象的指针


      现在您的代码不正确。你可以这样重写:

      NSArray * myArray = [[[NSUserdefaults standardUserDefaults] objectForKey:@"array"] retain];
      ....
      [myArray release]; 
      

      【讨论】:

        【解决方案3】:

        听起来你想摆脱价值。您正在做的是使用来自[[[NSUserdefaults standardUserDefaults] objectForKey:@"array"] 的数据创建一个数组。

        如果您想获取数据并在其他地方使用:

        NSArray * myArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"array"] retain];
        // do stuff here
        [myArray release]; 
        

        就像铍说的。当然,您可能必须先设置它:

        [[NSUserDefaults standardUserDefaults] setObject:anObject forKey:@"array"];
        

        如果你想摆脱数据:

        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"array"];
        

        因为我真的不知道你在滑雪什么,所以很难给你你想要的答案。你能把它清理一下吗?

        【讨论】:

        • 我想要做的就是从 nsuserdefaults 中提取数组,将其设置为另一个数组,并使存储在 nsuserdefaults 中的数组保持不变。就是这样
        【解决方案4】:

        存储数组

         NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setObject:yourArray forKey:@"yourKey"];  
        [userDefaults synchronize];
        

        检索

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        NSArray *yourArr = [userDefaults objectForKey:@"yourKey"];
        

        【讨论】:

          猜你喜欢
          • 2011-12-13
          • 1970-01-01
          • 1970-01-01
          • 2015-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多