iphone - Error de ARC al declarar delegado ivar
ios automatic-ref-counting (3)
Estoy usando ARC (no, esto no es NDA). Estoy declarando mi ivar en mi interfaz con
id itemDelegate;
Entonces declaro la propiedad:
@property (nonatomic, weak) id<mySecretDelegateYouAreNotSupposedToSeeOnSO> itemDelegate;
(con débil en lugar de asignar debido a ARC)
En mi archivo de implementación simplemente lo sintetizo: @synthesize itemDelegate;
Sin embargo, estoy recibiendo el error:
"Existing ivar ''ItemDelegate'' for _weak property ''itemDelegate'' must be _weak".
Alguien sabe lo que está mal? Gracias por tu ayuda.
ARC - Conteo automático de referencias
Con ARC y iPhone Simulator 5.0, lo siguiente parece funcionar bien (no hay advertencias, etc.):
SomeObject.h
@class SomeObject;
@protocol SomeObjectDelegate <NSObject>
- (void)someObjectDidFinishDoingSomethingUseful:(SomeObject *)object;
@end
@interface SomeObject : NSObject {
__unsafe_unretained id <SomeObjectDelegate> _delegate;
}
@property (nonatomic, assign) id <SomeObjectDelegate> delegate;
@end
SomeObject.m
#import "SomeObject.h"
@implementation SomeObject
@synthesize delegate = _delegate;
@end
Existe un problema en el que, incluso si actualiza XCode (4.2+) desde Mac App Store, como Apple lo requiere, deja la versión anterior de XCode en su computadora. Por lo tanto, si tiene un XCode fijado en su launchpad y lo inicia, obtendrá todos estos errores como se indica a continuación. Debe encontrar la versión más reciente de XCode, por ejemplo, al usar la función Spotlight, ejecutarla y, luego, como una de sus primeras tareas, elimina la versión anterior de XCode. Entonces no tienes más errores reportando de esta manera.
Intente algo como lo siguiente ( ejemplo de: http://vinceyuan.blogspot.com/2011/06/wwdc2011-session-323-introducing.html ):
@interface SomeObject : NSObject {
__weak id <SomeObjectDelegate> delegate;
}
@property (weak) id <SomeObjectDelegate> delegate;
@end
Tenga en cuenta cómo se declara el ivar.