automatic-ref-counting nstextview iboutlet weak

automatic ref counting - IBOutlet para NSTextView en un proyecto ARC



automatic-ref-counting weak (1)

Creo que encontré la razón por la que algunas clases no admiten una referencia débil:

Como puedes leer here :

Razón fundamental: históricamente, una clase ha podido proporcionar su propia implementación de conteo de referencia anulando retener, liberar, etc. Las cargas y almacenes deben ser atómicos con respecto a la versión final. Por lo tanto, las implementaciones de recuento de referencias personalizadas existentes generalmente no admitirán referencias débiles sin esfuerzo adicional. Esto es inevitable sin romper la compatibilidad binaria.

Como se lee here en la mayoría de los casos, un IBOutlet debería ser débil.

Ahora, como puede leer en la biblioteca de desarrollo, no todas las clases admiten referencias débiles. (por ejemplo, NSTextView). Esto significa que tienes que usar asignar:

@property (assign) IBOutlet NSTextView *textView;

Si usa una referencia débil, obtendrá el siguiente error: "La síntesis de una propiedad débil-no disponible no está permitida porque requiere la síntesis de un ivar del objeto __weak"

Lo que la documentación que faltó mencionar ahora es que debe establecer la propiedad nuevamente en cero después de su uso, por ejemplo, mediante un método de dealloc :

- (void)dealloc { self.textView = nil; }

Hasta donde entendí, las clases marcadas con NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE no admiten referencias débiles, pero ¿cuál es la razón?