objective-c cocoa-touch delegates automatic-ref-counting

objective c - Manera recomendada para declarar propiedades de delegado con ARC



objective-c cocoa-touch (2)

Use __unsafe_unretained lugar de weak para los proyectos ARC dirigidos a iOS 4 y 5. La única diferencia es que weak el puntero cuando se desasigna, y solo se admite en iOS 5.

Su otra pregunta se responde en ¿Por qué a los delegados de Objective-C generalmente se les asigna la propiedad en lugar de retener? .

Solía ​​declarar todas las propiedades de delegado como

@property (assign) id<FooDelegate> delegate;

Tenía la impresión de que todas las propiedades asignadas ahora deberían ser punteros débiles, ¿es correcto? Si intento declarar como:

@property (weak) id<FooDelegate> delegate;

Aparece un error al intentar @synthesize (las propiedades débiles autogeneradas no son compatibles).

¿Cuál es la mejor práctica en este caso?


Xcode 4 Refactor > Convertir a transformaciones ARC de Objective-C :

@interface XYZ : NSObject { id delegate; } @property (assign) id delegate; ... @synthesize delegate;

dentro:

@interface XYZ : NSObject { id __unsafe_unretained delegate; } @property (unsafe_unretained) id delegate; ... @synthesize delegate;

Si mal no recuerdo, también se menciona en el video WWDC 2011 sobre ARC.