He leído y escuchado desde que ARC se anunció por primera vez que era una cosa de tiempo de compilación y sería compatible con iOS 4. He rediseñado mi proyecto con éxito a ARC usando la refactorización automática de Xcode 4.2, y cuando se compila contra el iOS 5.0 SDK, funciona bien. Sin embargo, si intento compilar contra mis iOS 4.2 SDK, se produce un error en tiempo de enlace, faltan los siguientes símbolos:¿ARC es realmente compatible con iOS 4? El iOS 4.2 SDK no tiene símbolos relacionados con ARC en el tiempo de vinculación
- _objc_retainAutoreleaseReturnValue
- _objc_autoreleaseReturnValue
- _objc_storeStrong
- _objc_retain
- _objc_release
- _objc_retainAutoreleasedReturnValue
yo sepa, y estos símbolos están presentes en 5.0, pero no 4.2:
iPhoneOS5.0.sdk/usr/lib $ find . -type f|xargs nm|grep -i _objc_retain$
00005ed0 T _objc_retain
000061d0 T _objc_retain
iPhoneOS4.2.sdk/usr/lib $ find . -type f|xargs nm|grep -i _objc_retain$
[... *crickets* ...]
¿Quiere decir esto que Apple mentido? Supongo que estoy confundido y haciendo algo mal, pero no puedo entender qué.
esto es con la liberación de GM de Xcode 4.2 (Build 4C199)
Creo que requiere iOS 4.3. – ughoavgfhw
Además de lo que otros han dicho, no instale el 4.2 SDK. Use el 5.0 SDK. Establezca su destino de despliegue. No me refiero a esto, quiero decir en general; los SDK anteriores no deberían usarse. –
Wow, no puedo creer que haya pasado tanto tiempo sin saber que los nuevos SDK podrían compilarse para versiones anteriores del sistema operativo. Aquí he estado enojado con Apple porque han estado borrando todas mis versiones antiguas de SDK: ¡Gracias! –