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.