Vida manual del objeto con ARC

Examine el siguiente código y suponga que fue compilado bajo ARC:

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

Aunque la cola de operaciones se declara como una variable local, su tiempo de vida continúa más allá del alcance del método siempre y cuando tenga operaciones en ejecución.

¿Cómo se logra esto?

ACTUALIZAR:

Aprecio los comentarios bien pensados ​​de Rob Mayoff, pero creo que no hice mi pregunta correctamente. No estoy haciendo una pregunta específica sobre NSOperationQueue, sino más bien una pregunta general sobre la vida útil del objeto en ARC. Específicamente, mi pregunta es esta:

¿Cómo, bajo ARC, un objeto puede participar en la gestión de su propia vida?

He sido programador durante mucho tiempo, y soy muy consciente de las trampas de tal cosa. No estoy buscando que me den clases sobre si esto es una idea buena o mala. Creo que en general es una mala. Más bien, mi pregunta es académica:Ya sea una buena o mala idea o no, ¿cómo se haría esto en ARC y cuál es la sintaxis específica para hacerlo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta