ARC, auto y bloques

Pensé que entendía que el uso de uno mismo en un bloque que se copia es unno no.

Pero en un intento de limpiar mi código, habilité un montón de advertencias en Xcode, una llamada "Enviar mensajes a punteros débiles"

así que ahora en todos mis bloques, cada vez que uso mi creadoweakself referencia__weak typeof(self) weakself = self;

Recibo esta advertencia:Weak receiver may be unpredictably set to nil

Un ejemplo trivial:

__weak typeof(self) weakself = self;
[aClass doSomethingInABlock:^{

     [weakself doSomething]; //warning.

}];

He visto respuestas que definen una versión de sí mismo dentro del bloque de la siguiente manera:

__weak typeof(self) weakself = self;
[aClass doSomethingInABlock:^{
     typeof(self) selfref = weakself; 
     [selfref doSomething]; //no warning.

}];

Entonces me pregunto qué sucede realmente aquí:

¿Solo estoy engañando al compilador?¿Qué hace una referencia fuerte a una referencia débil?Me falta algo más.

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta