Retener el ciclo en `self` con bloques

Me temo que esta pregunta es bastante básica, pero creo que es relevante para muchos programadores de Objective-C que se están metiendo en bloques.

Lo que he escuchado es que, dado que los bloques capturan variables locales a las que se hace referencia comoconst copias, usandoself dentro de un bloque puede resultar en un ciclo de retención, en caso de que ese bloque se copie. Entonces, se supone que debemos usar__block para forzar al bloque a tratar directamente conself en lugar de tenerlo copiado.

__block typeof(self) bself = self;
[someObject messageWithBlock:^{ [bself doSomething]; }];

en lugar de solo

[someObject messageWithBlock:^{ [self doSomething]; }];

Lo que me gustaría saber es lo siguiente: si esto es cierto, ¿hay alguna manera de evitar la fealdad (aparte de usar GC)?

Respuestas a la pregunta(9)

Su respuesta a la pregunta