iphone - cómo usar delegados con recuento automático de referencias
ios ios5 (1)
Me he subido al carro de ARC. En el pasado, tenía mis propiedades de delegado declaradas así:
@property(assign) id<MyProtocol> delegate;
Entonces pensé que haría esto bajo ARC:
@property(weak) id<MyProtocol> delegate;
No tan. En la instrucción @synthesize en el .m tengo un error de compilación:
* Problema semántico: el delegado de ivar ''existente'' para ''delegado'' de propiedad débil debe ser __weak *
¡LO HE DICHO como débil, sin embargo! Además, ¿cómo paso una clase implementando un protocolo a una propiedad débilmente referenciada? ¿Tengo que envolverlo en una de esas extrañas llamadas obj_unreinidas?
Cualquier ayuda sobre esto sería muy apreciada.
"ivar" significa "variable de instancia", que no has mostrado. Apuesto a que se ve así:
@interface Foo : NSObject {
id delegate;
}
@property (weak) id delegate;
Lo que el error está diciendo es que debe verse así:
@interface Foo : NSObject {
__weak id delegate;
}
@property (weak) id delegate;
Si la propiedad dice ser débil, el valor en el que el valor termina siendo almacenado también debe ser débil.