2011-08-30 11 views
44

Si mi lectura de "Zeroing Weak References" writeup de Mike Ash es correcta, las referencias débiles son como assign referencias sin ARC. Sin embargo, si el objeto al que se hace referencia es desasignado, en lugar de obtener un "puntero colgante" (es decir, un puntero que apunta a un objeto desasignado), el puntero se establece en nil.Reducción a cero de las referencias débiles en ARC

¿Es esto correcto y ocurre esto con cualquier propiedad marcada weak o assign (cuando ARC está activo)?

Si esto es correcto, esto eliminaría una gran cantidad de SIGABRT.

Respuesta

38

En su mayoría es correcto, pero las propiedades assign siguen siendo tratadas igual que antes, solo weak se están poniendo a cero. Otra advertencia es que las referencias débiles de puesta a cero solo están disponibles en Mac OS X ≥ 10.7 e iOS ≥ 5. Mientras que el resto de ARC se transfirió a 10.6 e iOS 4, las referencias débiles no se pueden utilizar en absoluto en estos SO.

+6

Gracias por eso @cobbal. Al menos en XCode 4.2 beta, NO PUEDE usar 'weak' en una declaración de propiedad si su destino de despliegue es

+1

Gracias @Yar, estaba recibiendo ese error y no sabía de dónde venía. – Pascal

+1

Excelente punto acerca de la compatibilidad con la parte posterior. – jlehr

Cuestiones relacionadas