Comencé a desarrollar mi primera aplicación iOS con Xcode 4.2, y me estaba orientando a iOS 5.0 con una plantilla de "aplicación de utilidad" (la que viene con un Controlador FlipsideView).¿Cómo reemplazo las referencias débiles cuando uso ARC y apunte a iOS 4.0?
He leído que, dado que ARC es una función en tiempo de compilación, también debería ser compatible con iOS 4, así que intenté orientar mi aplicación a 4.3 e intentar compilarla. Cuando lo hago, me sale este error:
FlipsideViewController.m: Error: Automático Número de recuento de referencia: El destino de implementación actual no admite referencias __weak automatizados
Se hace referencia a esta línea:
@synthesize delegate = _delegate;
esa variable se declara como:
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
entiendo que "referencia débil s "no son compatibles con iOS 4, pero realmente no entiendo por qué querría usar una referencia débil para empezar, ni puedo imaginar cómo reescribiré las cosas para evitar su uso, mientras sigo aprovechando ARC (después de todo, se supone que funciona con iOS 4 y 5 ¿no?)
Gracias por el asesoramiento. Usted dice "apuntar al sistema operativo anterior ...". ¿Esto significa que solo debo usar unsafe_unretained en compilaciones de la aplicación anterior a 5.0? ¿O puedo simplemente usar unsafe_unretained en mi código y compilarlo para apuntar tanto a 4.x como a 5.x? –
@Mason - 'unsafe_unretained' es compatible con iOS 4.xy 5.0, por lo que te ofrece compatibilidad con versiones anteriores. Si estuviera construyendo solo 5.0, podría cambiar a 'weak' para aprovechar la seguridad adicional que le proporciona. –
Intenté unsafe_unretained, funcionó de todos modos. Sin embargo, recibí muchas advertencias como '"** __NSAutoreleaseNoPool(): Objeto 0x564bd90 de la clase __NSArrayM liberado automáticamente sin ningún grupo en su lugar - solo goteando" * ", ¿eso es normal? – fifth