iOS 5 Mejores prácticas (¿Liberar / retener?)

Como progtwigdor inicial de iPhone, ¿cuál es la mejor práctica para escribir aplicaciones para usar con iOS 5 o versiones anteriores? Específicamente, ¿debería continuar utilizando la liberación / retención de datos, o debería ignorar eso? ¿Importa?

Tu decides. Puede escribir aplicaciones usando ARC (conteo automático de referencias), 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 es que muchas bibliotecas que desearía usar (a veces) arrojarán innumerables errores y no podrá usarlos hasta que los desarrolladores publiquen una actualización que sea compatible con ARC.


Editar : Recientemente descubrí que puede desactivar ARC por archivo. Ver la respuesta de pixelfreak . Por lo tanto, 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 dice Apple sobre la exclusión de ARC de archivos específicos:

Cuando migra un proyecto para usar ARC, el indicador del comstackdor -fobjc-arc se establece como el predeterminado para todos los archivos fuente de Objective-C. Puede deshabilitar ARC para una clase específica utilizando el indicador de comstackdor -fno-objc-arc para esa clase. En Xcode, en la pestaña Crear fases de destino, abra el grupo Comstackr fonts para mostrar la lista de archivos de origen. Haga doble clic en el archivo para el cual desea establecer la bandera, ingrese -fno-objc-arc en el panel emergente, luego haga clic en Listo.

enter image description here

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

Para cualquiera que todavía tenga curiosidad sobre cómo desactivar ARC en archivos individuales, esto es lo que hice:

  1. Vaya a la configuración de su proyecto, en Build Phases > Compile Sources
  2. Seleccione los archivos que desea que ARC deshabilite y agregue indicadores de comstackdor -fno-objc-arc . Puede establecer indicadores para múltiples archivos en una sola toma seleccionando los archivos y luego presionando la tecla “Enter”.

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

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

iOS 5 todavía está bajo una NDA, y probablemente lo será hasta que publiquen la versión pública. Si tiene una cuenta de desarrollador, diríjase a los foros de desarrolladores de Apple y pregunte allí.

Para las versiones anteriores, debe contar las referencias y conservarlas y publicarlas según corresponda. Consulte la guía de administración de memoria .

Editar: Aquí hay una especificación pública para el recuento automático de referencias y una cita de la página pública de iOS 5 :

El conteo automático de referencias (ARC) para Objective-C hace que la gestión de la memoria sea el trabajo del comstackdor. Al habilitar ARC con el nuevo comstackdor LLVM de Apple, nunca será necesario volver a escribir “retener” o “liberar”, lo que simplificará enormemente el proceso de desarrollo y reducirá los lockings y las pérdidas de memoria. El comstackdor tiene una comprensión completa de sus objetos, y libera cada objeto en el instante en que ya no se utiliza, por lo que las aplicaciones se ejecutan tan rápido como siempre, con un rendimiento predecible y fluido.

Los detalles son claros / bajo NDA en este momento, pero Apple implementó el conteo 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 iOS 5 SDK, puede ignorar de forma segura el recuento de retención / liberación.

[edit] sudo rm -rf hace un buen punto; libs de terceros pueden verse afectados significativamente

Nadie mencionó SystemConfiguration.framework ? Por favor, no te olvides de ponerlo en Frameworks . Pasé miserablemente varias horas para darme cuenta.

Sin duda es la elección del desarrollador o del equipo. ARC (contador de referencia automático) ha facilitado un poco las cosas al administrar automáticamente la memoria por usted. Liberará, retendrá y desmantelará cuando sea apropiado. Creo que debe obtener experiencia administrando 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 depende de bibliotecas de terceros, que si no se convierten a ARC evitarán que su aplicación se compile. La elección depende obviamente de la situación en cuestión.

establecer el marcador como -fno-objc-arc en la configuración del proyecto> Fases de comstackción> Comstackr fonts

    Intereting Posts