La aplicación se bloquea después de la actualización de Xcode a 4.5. Asignación de objeto retenido a la variable unsafe_unretained
En mi clase tengo undispatch_queue_t
propiedad declarada asi:
@property (nonatomic, assign) dispatch_queue_t queue;
Luego en mi método init hago:
- (id)initWithServerUrls: (NSString*)serverUrls
{
if (self = [super init])
{
_queue = dispatch_queue_create("com.xxx.my_send_queue", DISPATCH_QUEUE_SERIAL);
}
return self;
}
En Xcode 4.4.1 funcionó y no causó ningún problema (la aplicación probó + en la tienda de aplicaciones). Ahora, después de actualizar a Xcode 4.5, la aplicación fallaEXC_BAD_ACCESS y Xcode me da una advertencia en esa línea diciendo:
Asignación de objeto retenido a la variable unsafe_unretained; objeto será liberado después de la asignación
Apple actualizó el compilador en Xcode 4.5 de LLVM 4.0 a LLVM 4.1, pero no tengo ni idea de por qué mi código está fallando ahora.
Pasé por el código y el bloqueo se produce justo después de esa línea. ¿Tiene alguna idea de lo que puede estar mal y cómo puedo solucionarlo?
SOLUCIÓN:
Logré que funcionara con ambos SDK. Acabo de añadir:
#if OS_OBJECT_USE_OBJC
@property (nonatomic, strong) dispatch_queue_t queue; // this is for Xcode 4.5 with LLVM 4.1 and iOS 6 SDK
#else
@property (nonatomic, assign) dispatch_queue_t queue; // this is for older Xcodes with older SDKs
#endif
Espero que alguien lo encuentre útil