Повторно использовать имена переменных с автоматическим освобождением? - PullRequest
3 голосов
/ 05 июля 2010

Мне просто любопытно, можно ли повторно использовать переменную, назначенную вспомогательному методу.

NSDictionary *address = [NSDictionary dictionaryWithObjectsAndKeys:@"Italy", @"Country", 
address = [NSDictionary dictionaryWithObjectsAndKeys:@"England", @"Country", nil];

или я должен просто назначить 2-ю новую переменную?

NSDictionary *address = [NSDictionary dictionaryWithObjectsAndKeys:@"Italy", @"Country", 
NSDictionary *address2 = [NSDictionary dictionaryWithObjectsAndKeys:@"England", @"Country", nil];

cheers gary

1 Ответ

5 голосов
/ 05 июля 2010

В первом примере указатель адреса будет указывать на другой объект, поэтому вы потеряете ссылку на исходный словарь.

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

Второй пример намного лучше, он позволяет вам обращаться к обоим словарям независимо друг от друга, не наступая ни на один, ни на другой.

Однако, если вы хотите объединить два словаря, вы должны создать изменяемую копию первого словаря, а затем использовать addEntriesFromDictionary: для объединения двух. Не забудьте выпустить / автоматически выпустить изменяемую копию, которую вы создаете при этом.

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