Я знаю, что есть несколько "похожих" вопросов, но я думаю, что это проблема, с которой сталкиваются многие программисты, и которой необходимо уделить дополнительное внимание.
Скажем, у меня есть фабричный метод для класса, который возвращает объект с автоматическим освобождением:
+(id)queueWithDelegate:(id)aDelegate {
return [[[self alloc] initWithDelegate:aDelegate] autorelease];
}
Когда я вызываю эту функцию и получаю мой queue
объект, я должен явно retain
его или же простой факт, что я назначаю его переменной , делает это?
MyQueue q = [MyQueue queueWithDelegate:self]; // Does this need to be retained?
Или я путаю это со свойствами? Если у меня есть свойство, подобное:
@property (nonatomic, *retain*) myQueue;
// Does the "retain" part of the property mean it's going to automatically add
// to the retain count?
self.myQueue = [MyQueue queueWithDelegate:self]; // Do I need to call retain?
Думаю, моя проблема в том, что я перепутал свойства с локальными переменными. Спасибо за понимание.