En mi clase tengo una propiedad dispatch_queue_t
declaró así:La aplicación se bloquea después de la actualización de Xcode a 4.5. Asignar el objeto retenido a la variable unsafe_unretained
@property (nonatomic, assign) dispatch_queue_t queue;
Luego, en mi método init que 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 y funcionó 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 se bloquea con EXC_BAD_ACCESS y Xcode me da una advertencia en esa línea que dice:
de asignar el objeto retenido a la variable unsafe_unretained; objeto se lanzará 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 idea de por qué mi código está fallando en este momento.
Pasé por el código y el bloqueo ocurre justo después de esa línea. ¿Tiene alguna idea de lo que puede estar mal y cómo puedo solucionarlo?
SOLUCIÓN:
me las arreglé para conseguir que funcione 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 le resulta útil
self._queue = dispatch_queue_create ... ¿lo arregla? - agregando el "yo"." –
No, sigue igual, se bloquea. Advertencia también está allí. – RaffAl
que" Asignando objeto retenido "significa que el resultado de dispatch_queue_create (... y" a variable unwafe_unretained "significa el _queue. Y si el @synthetize doesn ' t solve (porque está en Constructor) que de alguna manera necesita manipular el dispatch_queue_create (valor devuelto, ¿podría publicar ese objeto, qué devuelve? –