[[NSUserDefaults standardUserDefaults] objectForKey]返回什么?

时间:2011-11-08 17:42:23

标签: objective-c nsuserdefaults

如果我这样做

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

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

4 个答案:

答案 0 :(得分:5)

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

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

只是做:

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

答案 1 :(得分:2)

  

我是否要销毁存储在NSUserDefaults中的值@“array”?

  

它是否仍然可以提取?

<强>可提取

  

[[NSUserdefaults standardUserDefaults] objectForKey:@“array”];返回指针或值?

<强>指针。返回指向对象的指针


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

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

答案 2 :(得分:2)

听起来我想要摆脱价值。你正在做的是用[[[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"];

因为老实说我不知道​​你在滑雪什么,所以很难找到你想要的答案。你可以把它清理一下吗?

答案 3 :(得分:0)

存储阵列

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

提取

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