что возвращает [[NSUserDefaults standardUserDefaults] objectForKey]? - PullRequest
0 голосов
/ 08 ноября 2011

если я делаю это

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

уничтожаю ли я значение, сохраненное в NSUserDefaults для ключа @"array"?Это все еще извлекаемый или нет уже?Имеет ли [[NSUserdefaults standardUserDefaults] objectForKey:@"array"]; return указатель или значение?

Ответы [ 4 ]

5 голосов
/ 08 ноября 2011

Ваш вызов objectForKey возвращает автоматически освобожденный массив.

Не делайте alloc / init или release что-либо подобное.Вы будете протекать и, скорее всего, потерпите крах.

Просто сделайте:

NSArray * myArray = [[NSUserDefaults standardUserDefaults] objectForKey: @"array"];
2 голосов
/ 08 ноября 2011

Мне кажется, что вы хотите избавиться от ценности. То, что вы делаете, - это создание массива с данными из [[[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"];

Поскольку я, честно говоря, не знаю, что вы катаетесь на лыжах, очень трудно дать вам ответ, который вы ищете. Не могли бы вы немного прояснить ситуацию?

2 голосов
/ 08 ноября 2011

уничтожаю ли я значение, хранящееся в NSUserDefaults для ключа @ "array"?

NO

Это все еще можно извлечьеще нет?

Извлекаемый

Имеет ли [[NSUserdefaults standardUserDefaults] objectForKey: @ "array"];возвращать указатель или значение?

Указатель.Возвращает указатель на объект .


Теперь ваш код неверен.Вы можете переписать это так:

NSArray * myArray = [[[NSUserdefaults standardUserDefaults] objectForKey:@"array"] retain];
....
[myArray release]; 
0 голосов
/ 24 ноября 2016

Массив магазина

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

Получить * * 1004

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *yourArr = [userDefaults objectForKey:@"yourKey"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...