2011-09-19 29 views
50

Tengo una aplicación de iOS que quiero convertir a ARC. Solo usaría la herramienta de migración, pero me falla de manera consistente durante la fase de vista previa.¿Cómo habilita ARC en todo el proyecto en Xcode 4.2

Sé que puedo usar la directiva -fobjc-arc compilador de manera archivo por archivo, pero desea habilitar ARC en todo el proyecto, a continuación, apague clases individuales usando -fno-objc-arc.

Los proyectos nuevos en 4.2 pueden usar ARC de forma predeterminada, por lo que debe haber un interruptor en alguna parte.

Puede alguien ayudarme a convertir el proyecto a ARC

Respuesta

65

"ARC está disponible en Xcode 4.2, actualmente en fase beta, y sólo cuando compilar con Clang (también conocido como "compilador de Apple LLVM"). El ajuste es llamada, obviamente suficiente "Objective-C automática Referencia Counting". Encenderlo, y listo.

Si usted está trabajando en el código existente, cambiar este ajuste producirá una enorme cantidad de errores . ARC no solo administra la memoria para usted, pero le prohíbe tratar de hacerlo usted mismo. Es ilegal enviar manualmente retención/liberación/liberación automática cuando se usa ARC. Como el código que no es ARC Cocoa está lleno de esto, obtendrá muchos errores .

Afortunadamente, Xcode ofrece una herramienta para convertir el código existente. Seleccione Editar -> Refactorizar ... -> Convertir a Objective-C ARC ... y Xcode lo guiará en la conversión de su código. . Aunque puede haber algunos situaciones en las que necesita ayuda para saber qué hacer, el proceso debe ser en gran medida automática"

Tomé que a partir de este enlace, me ha ayudado mucho: http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html

+0

No es "en gran medida automática" en absoluto en mi extremo, acabo de pasar una hora o más deshacerse de las partes retenidas y las autorreleases, ¿cuál es el punto de este 'Convert to Objective-C ARC'? ¿Qué hace? – PaulG

+0

¿Está en lo correcto, aún necesita eliminar manualmente las publicaciones y comunicados? No estoy seguro de si fue el objetivo de Apple el de obligarlo a ver lo que ya no necesita o si era demasiado propenso a errores para que Xcode los elimine a todos sí mismo. – RyanG

48

Seleccione su proyecto o meta y luego ir a la configuración de generación y bajo la sección de Apple LLVM compilador 3.0 -. idioma verá la opción Objective-C automática Referencia Contando

+0

La configuración justo debajo de ARC para 'Garbage Collection', ¿está ligada a ARC? – raffian

+1

@SAFX, no. ARC y GC son dos cosas completamente diferentes. –

+1

¿Esto también es cierto en xcode 4.6? – topwik

5

Para towpse, en Xcode 4.6 deberá buscar "CLANG_ENABLE_OBJC_ARC" y luego cambiarlo a "Sí" para habilitarlo.

Cuestiones relacionadas