Vida útil do objeto manual com ARC

Examine o código a seguir e assuma que ele foi compilado no ARC:

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

Embora a fila de operações seja declarada como uma variável local, sua vida útil continua além do escopo do método, desde que tenha operações em execução.

Como isso é conseguido?

ATUALIZAR:

Eu aprecio os comentários bem pensados ​​de Rob Mayoff, mas acho que não fiz a minha pergunta corretamente. Não estou fazendo uma pergunta específica sobre o NSOperationQueue, mas sim uma questão geral sobre o tempo de vida do objeto no ARC. Especificamente, minha pergunta é esta:

Como, sob o ARC, um objeto pode participar da gestão de sua própria vida?

Sou programador há muito tempo e estou bem ciente das armadilhas de tal coisa. Eu não estou olhando para ser lecionado sobre se esta é uma idéia boa ou ruim. Eu acho que, em geral, é ruim. Pelo contrário, minha pergunta é acadêmica:Seja uma ideia boa ou ruim ou não, como alguém faria isso no ARC e qual é a sintaxe específica para isso?

questionAnswers(4)

yourAnswerToTheQuestion