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

发布于 2024-12-14 05:59:56 字数 366 浏览 5 评论 0原文

如果我这样做,

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

我是否会破坏 NSUserDefaults 中存储的键 @"array" 的值?它仍然可以提取还是已经不能提取? [[NSUserdefaults standardUserDefaults] objectForKey:@"array"]; 返回指针还是值?

if i'm doing this

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

am i destroying value stored in NSUserDefaults for key @"array"? Is it still extractable or not already? Does [[NSUserdefaults standardUserDefaults] objectForKey:@"array"]; return pointer or value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

何处潇湘 2024-12-21 05:59:56

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

不要围绕它进行分配/初始化或释放操作。你会泄漏并且很可能会崩溃。

只要这样做:

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

Your call to objectForKey is returning an autoreleased array.

Don't do the alloc/init or release thing around that. You'd be leaking and most likely crashing.

Just do:

NSArray * myArray = [[NSUserDefaults standardUserDefaults] objectForKey: @"array"];
念﹏祤嫣 2024-12-21 05:59:56

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

它仍然可以提取吗?

可提取

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

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


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

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

am i destroying value stored in NSUserDefaults for key @"array"?

NO

Is it still extractable or not already?

Extractable

Does [[NSUserdefaults standardUserDefaults] objectForKey:@"array"]; return pointer or value?

Pointer. Returns pointer to object.


Now your code is incorrect. You can rewrite it like this:

NSArray * myArray = [[[NSUserdefaults standardUserDefaults] objectForKey:@"array"] retain];
....
[myArray release]; 
岁吢 2024-12-21 05:59:56

在我看来,你想摆脱这个价值。您正在做的是使用 [[[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"];

因为我真的不知道你在滑雪,所以很难给你你正在寻找的答案。你能稍微澄清一下吗?

It sounds to me like you want to get rid of the value. What you are doing is making an array with the data from [[[NSUserdefaults standardUserDefaults] objectForKey:@"array"].

If you want to get the data and use it elsewhere:

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

just like beryllium said. Of course, you could have to set it first:

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

If you want to get rid of the data:

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

Because I honestly do not know what you are skiing, it is very hard to give you the answer you are looking for. Could you please clear it up a little?

吃兔兔 2024-12-21 05:59:56

存储数组

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

检索

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

Store array

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

Retrieve

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *yourArr = [userDefaults objectForKey:@"yourKey"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文