Изменяемый объект в неизменяемом объекте - PullRequest
2 голосов
/ 23 февраля 2009

Допустимо ли иметь NSMutableArray в NSDictionary? Или NSDictionary также должен быть изменчивым?

NSMutableArray будет иметь значения, добавленные к нему во время выполнения, NSDictionary всегда будет иметь те же 2 NSMutableArrays.

Спасибо

Dan

Ответы [ 2 ]

3 голосов
/ 23 февраля 2009

Да, это вполне приемлемо. Имейте в виду, что содержимое массива - это указатели на ваши NSMutableArrays - это то, что не может измениться в неизменной структуре словаря. То, на что указывают указатели, может изменить все, что вы хотите. Для остроумия:

NSMutableArray *arr = [[NSMutableArray alloc] init];
NSDictionary *dict = [NSDictionary dictionaryWithObject:arr forKey:@"test"];

[arr addObject:@"Hello"];
NSString *str = [[dict objectForKey:@"test"] objectAtIndex:0];
NSLog("%@", str);
0 голосов
/ 23 февраля 2009

Это вполне приемлемо. Но , это именно тот тип настройки, который предлагает вам серьезно подумать о замене словаря подклассом NSObject, который имеет два свойства для доступа к массивам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...