2011-11-08 57 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"]; 
相關問題