Pregunta

Como programador inicial de iPhone, ¿cuál es la mejor práctica para escribir aplicaciones que se utilizarán con versiones iOS 5 o anteriores? Específicamente, ¿debo continuar usando la liberación/retención de datos, o debería ignorarlo? ¿Importa?

¿Fue útil?

Solución

Tu decides. Puede escribir aplicaciones utilizando ARC (Contado de referencia automático), y Xcode escribirá "código de pegamento" para permitir que sus aplicaciones habilitadas para ARC se ejecuten en iOS 4, no se requieren modificaciones. Sin embargo, ciertas cosas no funcionarán, y lo más notable muchas bibliotecas que desee usar (a veces) arrojará innumerables errores y no podrá usarlas hasta que los desarrolladores lanzen una actualización que sea compatible con ARC.


Editar: Recientemente descubrí que puedes desactivar el arco por archivo. Ver pixelfreakRespuesta. Entonces, mi consejo sigue en pie, pero ahora las bibliotecas de terceros no deberían necesitar ser actualizadas para trabajar con ARC.

Esto es lo que Apple dice sobre optando de ARC para archivos específicos:

Cuando migra un proyecto para usar ARC, el indicador del compilador -fobjc-Arc se establece como el valor predeterminado para todos los archivos de origen Objective-C. Puede deshabilitar ARC para una clase específica utilizando el indicador del compilador -fno-OBJC-ARC para esa clase. En XCode, en la pestaña Fases de compilación de destino, abra el grupo de fuentes de compilación para revelar la lista de archivos de origen. Haga doble clic en el archivo para el que desea configurar el indicador, ingrese -fno-oBJC-Arc en el panel emergente, luego haga clic en Hecho.

enter image description here

Ver la guía de transición completa aquí.

Otros consejos

Para cualquiera que todavía sea curioso sobre cómo desactivar el arco en archivos individuales, esto es lo que hice:

  1. Vaya a la configuración de su proyecto, debajo Build Phases > Compile Sources
  2. Seleccione los archivos que desea que ARC desactive y agregue -fno-objc-arc banderas del compilador. Puede establecer banderas para varios archivos en una toma seleccionando los archivos y luego presionando la tecla "Ingrese".

No sé si esta es la forma recomendada, pero funciona para mí.

PD: Recopilé esta información de clang.llvm.org aquí que es públicamente accesible, por lo tanto, no bajo NDA.

iOS 5 todavía está bajo una NDA, y probablemente lo estará hasta que lance la versión pública. Si tiene una cuenta de desarrollador, diríjase a la Foros de desarrolladores de Apple y pregunta allí.

Para versiones anteriores, debe contar las referencias y retener y liberar en consecuencia. Revisar la Guía de gestión de memoria.

Editar: Aquí está un especificación pública para recuento de referencias automáticas y una cita del Página pública iOS 5:

Contado automático de referencia (ARC) para Objective-C hace que la gestión de la memoria sea el trabajo del compilador. Al habilitar ARC con el nuevo compilador de Apple LLVM, nunca necesitará escribir o liberar nuevamente, simplificando drásticamente el proceso de desarrollo, al tiempo que reduce los bloqueos y las fugas de memoria. El compilador tiene una comprensión completa de sus objetos y libera cada objeto en el instante en que ya no se usa, por lo que las aplicaciones se ejecutan tan rápido como siempre, con un rendimiento predecible y sin problemas.

Los detalles son ligeros/debajo de NDA en este momento, pero Apple ha implementado el recuento automático de referencias (ARC) en iOS 5, como se detalla aquí: http://developer.apple.com/technologies/ios5/

Si desarrolla una nueva aplicación en Xcode 4 con el iOS 5 SDK, puede ignorar de manera segura el recuento de retención/liberación.

editar] sudo rm -rf hace un buen punto; Los libres de terceros pueden verse significativamente afectados

Nadie mencionó SystemConfiguration.Framework? Por favor, no olvides ponerlo en Marcos. Pasé miserablemente varias horas para darme cuenta.

Ciertamente es la elección del desarrollador o del equipo. ARCO (Contador de referencia automático) ha hecho las cosas un poco más fáciles al administrar automáticamente la memoria para usted. Liberará, retendrá y DealLoc cuando sea apropiado. Creo que debe ganar experiencia en la gestión de la memoria usted mismo, preferiblemente en una aplicación de prueba, si aún no lo ha hecho. Otra cosa a considerar es si su aplicación se basa en bibliotecas de terceros, que si no se convierten en ARC evitarán que su aplicación se compilará. La elección obviamente depende de la situación en cuestión.

Establecer Flag como -fno-Objc-Arc en la configuración del proyecto> Fases de construcción> Compilar fuentes

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top