Нужно ли использовать autorelease для объекта, который создан без использования alloc init?

Я обычно работаю, используя последнюю версию Objective C / Swift, которая уже использует ARC. Но теперь я должен продолжить работу над прогрессом, которая использует старую "ситуацию" Objective C, которая произошла до ARC. Я никогда не узнал о том, как использовать release а также autorelease правильно, а теперь запутался и параноик.

Из того, что я узнал, я могу просто использовать autorelease на любой моей инициализации объекта, а не беспокоиться об остальном, как если бы я использовал ARC. Но недавно я начал думать, нужно ли мне также добавить авто-релиз к:

  • объект автоматически создается с использованием синтаксиса, который с помощью @ условное обозначение.
  • объект возвращается из метода и статического метода, такого как [UIColor redColor],

Итак, теперь я начал добавлять autorelease каждый раз, когда я вижу создание какого-либо объекта. Я даже начал писать:

NSString * data = [@"" autorelease];
MyClass * myClass = [[[MyClass alloc] init] autorelease];
if (flag == true) {
    data = [[NSString stringWithFormat:[@"%@%@" autorelease], info1, info2, nil] autorelease];
    label.backgroundColor = [[UIColor redColor] autorelease];
}
label.text = data;

Можете ли вы дать мне простое правило, когда мне нужно или не нужно использовать autoreleaseпотому что все autoreleases в моем коде начинает заставлять меня проверять здравомыслие, правильно ли я поступаю или это просто моя паранойя. Помогите!

0 ответов

Другие вопросы по тегам