Нужно ли использовать 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
потому что все autorelease
s в моем коде начинает заставлять меня проверять здравомыслие, правильно ли я поступаю или это просто моя паранойя. Помогите!