Ручное время жизни объекта с ARC

Изучите следующий код и предположите, что он был скомпилирован в ARC:

- (void)foo {
    NSOperationQueue *oq = [[NSOperationQueue alloc] init];
    [oq addOperationWithBlock:^{
        // Pretend that we have a long-running operation here.
    }];
}

Хотя очередь операций объявляется как локальная переменная, ее время жизни остается за рамками метода, пока в нем выполняются операции.

Как это достигается?

UPDATE:

Я ценю хорошо продуманные комментарии Роба Мейоффа, но думаю, что не правильно задал свой вопрос. Я не задаю конкретный вопрос о NSOperationQueue, а скорее задаю общий вопрос о времени жизни объекта в ARC. В частности, мой вопрос заключается в следующем:

How, under ARC, can an object participate in the management of its own lifetime?

Я был программистом в течение очень долгого времени, и я хорошо осведомлен о подводных камнях такой вещи. Я не собираюсь читать лекции о том, хорошая это или плохая идея. Я думаю, что в целом это плохо. Скорее мой вопрос академический:Whether it's a good or bad idea or not, how would one do this in ARC and what is the specific syntax to do so?

Ответы на вопрос(4)

Ваш ответ на вопрос