Создание локальных объектов, преференций или просто лучше?

Это лучше создать локальный объект для последующего использования, как

NSDictionary *dic = [NSDictionary Dictionary];

или же

NSDictionary * dic = nil;

Это вещь предпочтения или одно лучше другого?

2 ответа

Решение

Это не то, что "одно лучше", это как "другое плохо".

Если вы собираетесь назначить ему новый объект позже, инициализируйте его как nil, иначе (вы теряете память, теряя ссылку на первый объект, созданный по ошибке.) - РЕДАКТИРОВАТЬ: нет, вы не теряете память (либо из-за автоматического выпуска или автоматического подсчета ссылок, но в любом случае это дополнительный ненужный вызов метода.) Это плохо.

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

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

Если вы будете использовать этот объект позже, вам следует создать экземпляр с первым параметром. Если вам нужно будет создать объект в каком-то блоке if-else, где вы будете повторно инициализировать его с некоторыми пользовательскими значениями, тогда второй вариант - это путь.

Например первый вариант:

NSMutableArray *arr = [NSMutableArray array];

for (int i = 0; i < 5; i++) {
  [arr addObject:@"string"];
}

или же

NSDictionary *dictionary = nil;
BOOL flag;

if (flag) {
  dictionary = [NSDictionary dictionaryWithObject:@"string" forKey:@"myKey"];
}
else {
  NSArray *objects;
  NSArray *keys;
  dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
}
Другие вопросы по тегам