Sommario:È possibile aggiungere alla lista di controllo le cose a cui prestare attenzione durante la migrazione su iOS 5? StackOverflow è stato di valore inestimabile dato che ho lavorato all'aggiornamento su iOS 5. Ho scoperto alcune cose basilari che avevo perso prima di Xcode 4.2, e mi chiedo quali altri "trucchi" potrebbero essere in agguato.A cosa prestare attenzione quando si esegue la transizione a iOS 5
Dettaglio: Con la spedizione di iOS 5 questa settimana, ho dovuto apportare alcune modifiche a un paio delle mie app. Xcode 4.2 fa un lavoro molto migliore analizzando il codice di gestione della memoria a causa della nuova funzionalità ARC. L'aggiornamento di iOS 5 è un ottimo punto in cui rivedere tutto il codice di gestione della memoria. Il nuovo compilatore trova anche una serie di altri problemi che i compilatori precedenti non avevano notato. Complimenti agli ingegneri del compilatore Apple. Ecco le principali cose che hanno aiutato (e molte di esse si applicano anche alle versioni precedenti di iOS).
- Assicurarsi di call [super dealloc] at the END of your dealloc methods, non l'inizio.
- In viewDidUnload, some people have reported bugs that require [super viewDidUnload] to be called at the end, non l'inizio, del tuo viewDidUnload.
- Comprendere i conteggi dei ritardi, i setter sintetizzati e quando chiamare il rilascio o il rilascio automatico. Il nuovo compilatore mostrerà più problemi rispetto ai vecchi compilatori. (Pensavo di essere stato attento, ma a quanto pare non ero abbastanza attento.) È necessario leggere lo memory management guide di Apple: nessuna scorciatoia.
- È una buona idea di turn on zombies when debugging (in Xcode, selezionare Prodotto | Modifica schema ... e selezionare lo schema Debug; nella scheda Diagnostica, selezionare Abilita oggetti Zombie). Questo può aiutarti a trovare i tentativi di utilizzo degli zombi (oggetti che non dovresti usare più).
- Lo strumento Leaks è anche utile. Esegui la tua app in modalità Profilo e scegli il modello Leaks. Nella finestra Strumenti, seleziona lo strumento Perdite e seleziona la casella "Raccogli contenuti in memoria trapelati" e ti aiuterà a vedere dove la memoria trapelata ha origine nel tuo codice.
ci sono un paio di cianfrusaglie che ho incontrato:
- di Apple singleton pattern esigenze "senso unico", ha aggiunto alla dichiarazione tipo di ritorno:
- (oneway void) release { }
- Si può necessario manually add "armv6" as an architecture type nelle impostazioni di compilazione (e assicurarsi che Build Active Architecture Only sia impostato su NO).
Qualche altro suggerimento di potenziali insidie che dovrei cercare? Ho la sensazione che le mie app siano più stabili ora, ma mi sentivo abbastanza bene con loro prima.
Non è la gestione della memoria, ma è comunque importante: se si scaricano dati e si desidera salvarli sul dispositivo, fare attenzione a non salvarli nella cartella dei documenti. Usa Library/Caches o tmp per quello. Oppure memorizzare i dati dell'applicazione in NSApplicationSupportDirectory aggiunto dal proprio ID bundle. vedi http://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1 per i dettagli. –
Neanche la gestione della memoria. Ma se stai facendo roba relativa a sicurezza/certificato. Tenete presente che i certificati con hash MD5 restituiscono kSecTrustResultRecoverableTrustFailure su SecTrustEvaluate. Perché ios5 considera gli hash MD5 non sicuri. – n3utrino
Un'altra cosa per la migrazione a IOS5 è l'UDID deprecato. http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-now –