2011-11-08 55 views
0

如果我做这个[[NSUserDefaults standardUserDefaults] objectForKey]返回什么?

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

我是摧毁存储在NSUserDefaults的关键值@“阵”?它仍然是可提取的还是不是已经?是否[[NSUserdefaults standardUserDefaults] objectForKey:@“array”];返回指针或值?

回答

5

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

不要执行alloc/init或释放事物。你会漏水,很可能会崩溃。

只要做到:

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

我在摧毁价值存储为NSUserDefaults的关键@ “阵”?

NO

难道还要提取或没有?

可萃取

是否[[NSUserDefaults的standardUserDefaults] objectForKey:@ “阵列”];返回指针或值?

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


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

NSArray * myArray = [[[NSUserdefaults standardUserDefaults] objectForKey:@"array"] retain]; 
.... 
[myArray release]; 
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"]; 

因为我真的不知道你是滑雪的东西,这是很难给你你正在寻找的答案。你能把它清理一下吗?

+0

所有我想做的事是exctract阵列NSUserDefaults的距离,将其设置为另一个数组,并留下存储在未被破坏的NSUserDefaults的阵列。就这样 –

0

存储阵列

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

检索

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
NSArray *yourArr = [userDefaults objectForKey:@"yourKey"]; 
相关问题