Resumen:¿Puede agregar a mi lista de comprobación las cosas a tener en cuenta al migrar a iOS 5? StackOverflow ha sido muy valioso ya que he trabajado en la actualización a iOS 5. He descubierto algunas cosas bastante básicas que me había perdido antes de Xcode 4.2, y me pregunto qué otras "trampas" podrían estar al acecho.Lo que debe tener cuidado al pasar a iOS 5
Detalle: Con iOS 5 de envío esta semana, he tenido que hacer algunos cambios en un par de mis aplicaciones. Xcode 4.2 hace un trabajo mucho mejor al analizar el código de administración de memoria debido a la nueva característica ARC. La actualización de iOS 5 es un excelente punto para revisar todo su código de administración de memoria. El nuevo compilador también encuentra una cantidad de otros problemas que los compiladores anteriores omitieron. Felicitaciones a los ingenieros compiladores de Apple. Estas son las principales cosas que han ayudado (y muchas de ellas también se aplicarán a versiones anteriores de iOS).
- Asegúrate de call [super dealloc] at the END of your dealloc methods, no el comienzo.
- En viewDidUnload, some people have reported bugs that require [super viewDidUnload] to be called at the end, no el comienzo, de su viewDidUnload.
- Comprender los recuentos de retención, los setters sintetizados y cuándo llamar la liberación o la liberación automática. El nuevo compilador señalará más problemas que los compiladores anteriores. (Pensé que había sido cuidadoso, pero aparentemente no fui lo suficientemente cuidadoso.) Se requiere lectura de memory management guide de Apple, sin atajos.
- Es una buena idea para turn on zombies when debugging (en Xcode, elija Producto | Editar esquema ... y seleccione el esquema de depuración; en la pestaña Diagnóstico, marque Activar objetos de zombie). Esto puede ayudarlo a encontrar intentos de uso de zombies (objetos que ya no debería usar).
- El instrumento Leaks también es útil. Ejecute su aplicación en el modo Perfil y elija la plantilla de Fugas. En la ventana Instrumentos, seleccione el instrumento Fugas y marque la casilla que dice "Recopilar contenido de la memoria escapada" y le ayudará a ver dónde se origina la memoria filtrada en su código.
Hay algunas cosas sueltas que he encontrado:
- singleton pattern necesidades de Apple "unidireccional" añadido a la declaración de tipo de retorno:
- (oneway void) release { }
- Usted puede necesita manually add "armv6" as an architecture type en la configuración de compilación (y asegúrese de que la configuración solo de arquitectura activa está configurada en NO).
¿Alguna otra sugerencia de peligros potenciales que debería buscar? Tengo la sensación de que mis aplicaciones son más estables ahora, pero me sentí bastante bien con ellas antes.
No es gestión de memoria, pero de todos modos es importante: si descarga datos y desea almacenarlos en el dispositivo, tenga cuidado de no guardarlos en la carpeta de documentos. Use Library/Caches o tmp para eso. O almacene los datos de la aplicación en NSApplicationSupportDirectory anexado por su ID de paquete. ver http://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1 para más detalles. –
Sin administración de memoria tampoco. Pero si está haciendo cosas relacionadas con Seguridad/Certificado. Tenga en cuenta que los certificados hash MD5 devuelven kSecTrustResultRecoverableTrustFailure en SecTrustEvaluate. Porque ios5 considera que los hashes MD5 no son seguros. – n3utrino
Otra cosa para migrar a IOS5 es el UDID en desuso. http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now –