Мне нужно знать, правильно ли я это делаю. Приложение работает нормально, но я не уверен, что правильно получил жизненный цикл (утечка?).
Примечание: прибор не имеет утечек.
Код метода aaa: некоторого класса A:
- (void) aaa {
NSString *path = ...something...;
NSBlockOperation* theOp = [NSBlockOperation blockOperationWithBlock: ^{
// using path
[self somethingElseWith:path];
}];
[self.aQueue addOperation:theOp];
}
Итак, я создаю блок для установки aQueue (NSOperationQueue *). Цель состоит в том, чтобы разгрузить из основного потока долго выполняющийся метод SomeElseWith: так, чтобы графический интерфейс продолжал реагировать.
Внутри блока я ссылаюсь на локальный var "путь", который будет выходить за пределы области в конце метода aaa:.
Если я правильно прочитал документ, блок сохранит «путь». Но ARC вставляет релиз в конце этого блока неявно? Было бы логично и приятно.
Или я должен объявить «путь» как __block и присвоить его nil в конце моего блока? (Инструкция ...)
Не уверен, что понимаю, как использовать __weak в этом контексте.