Preoccupazioni per la gestione della memoria
ARC è una manna dal cielo: non risolve tutti i problemi, ma è molto meglio che dover fare tutto da solo o una breve deviazione nella raccolta dei rifiuti con Mac OS X.
Ci sono due cose da tenere a mente con questo:
- è una funzionalità del compilatore: Xcode fornisce il supporto ARC per la creazione su iOS 4 target 1 .
- È facoltativo, anche per il targeting di iOS 5. Se vuoi imparare il conteggio dei riferimenti manuale (MRC) solo per assicurarti che tu lo sappia, puoi farlo anche con il targeting per iOS 5.
Ma ARC non toglie la capacità di capire come funziona la gestione della memoria, ma rimuove solo il tedio di dover dichiarare release
e retain
ovunque. Justin su Stack Overflow ha dato un buon riepilogo della differenza tra ARC e conteggio di riferimento manuale (MRC):
If you don't want to learn MRC, then you may want to first try ARC. A lot of people struggle with, or try to ignore common practices of MRC (example: I've introduced a number of objc devs to the static analyzer). If you want to avoid those issues, ARC will allow you to postpone your understanding; you cannot write nontrivial objc programs without understanding reference counting and object lifetimes and relationships, whether MRC, ARC, or GC. ARC and GC simply remove the implementation from your sources and do the right thing in most cases. With ARC and GC, you will still need to give some guidance.
Al di là dell'opportunità o meno di usare ARC, dovresti prendere in considerazione il supporto per la versione del sistema operativo: ha davvero senso concentrarsi sulle funzionalità specifiche della versione (come azzerare i riferimenti deboli) quando non ci sono molte persone usando quella versione?
O peggio ancora, se tutti usano iOS 3, per quanto tempo devi aspettare finché non puoi iniziare per usare ARC?
Questo dipende da due fattori: supporto dei dispositivi e quota di mercato.
Supporto dispositivo
Per fortuna, uno dei vantaggi per gli sviluppatori rispetto allo sviluppo di iOS è che l'ultima versione del software funziona su dispositivi più vecchi; generalmente risalendo almeno 2 anni.
Quindi, se desideri scegliere come target iOS 5, potrai scegliere come target i seguenti dispositivi:
- iPhone 4S (pubblicato nell'ottobre 2011)
- iPad 2 (pubblicato a marzo 2011)
- iPod touch (4a generazione, pubblicato a settembre 2009)
- iPhone 4 (pubblicato nel giugno 2010)
- iPad (pubblicato ad aprile 2010)
- iPod touch (3a generazione, pubblicato a settembre 2009)
- iPhone 3G S (pubblicato nel giugno 2009)
Che è un ampio set di opzioni. Se scegli come target iOS 4.2, puoi colpire tutti i dispositivi da quando iPhone 3G è stato rilasciato nel giugno 2008.
Quota di mercato
Che viene dall'altra domanda: si dovrebbe spendere tempo a imparare qualcosa di diverso dall'SDK di iOS 5: dipende da cosa si vuole fare.
Se vuoi concentrarti solo sugli ultimi e più grandi, usa tutte le funzionalità disponibili nell'ultimo SDK e dannatamente la quota di mercato (per ora): con tutti i mezzi per farlo.
Se vuoi massimizzare la quota di mercato ora, mi piacerebbe aspettare ancora qualche mese.
Marco Arment, il creatore di Instapaper (una app iOS molto popolare), pubblica di tanto in tanto le sue statistiche di utilizzo e ha appena pubblicato l'ultimo report qualche giorno fa. In esso, rileva che iOS 5 ha una quota di mercato dell'iPhone / iPhone 45,1 / 48%, mentre iOS 4.2 (necessario per CDMA iPhone 4s che non è ancora aggiornato a iOS 5) ha una quota di mercato del 97 / 97,2%.
Generalmente, colpire il 97% del mercato potenziale è "abbastanza vicino": l'ho visto come una regola empirica non solo per lo sviluppo di iOS, ma anche per lo sviluppo web.
Ma una cosa da considerare è la durata del ciclo di sviluppo che avrai. Se non hai intenzione di lanciarti per qualche mese, iOS 5 non è una cattiva scelta, anche se stai cercando di colpire gran parte della potenziale quota di mercato.
Gli utenti iOS tendono ad aggiornare molto più rapidamente rispetto ad altre piattaforme, per una serie di motivi, e non c'è motivo di credere che l'aggiornamento da iOS 4.x a iOS 5 si evolverà in modo diverso. Se si prende la quota di mercato di iOS 4.2 come base, è stata rilasciata solo un anno fa. Non è irragionevole supporre che l'ottobre del prossimo anno iOS 5 si collochi al 90%.
Conclusione
Non preoccuparti troppo della gestione della memoria: ARC è una grande comodità, ma non è un enorme cambiamento di paradigma rispetto alle versioni precedenti. Piuttosto, preoccupati per le altre funzionalità e problemi di supporto. Se stai lanciando oggi e devi raggiungere la quota di mercato più ampia possibile, scegli come target iOS 4 e considera l'utilizzo di MRC. In caso contrario, scegli come target iOS 5 e considera l'utilizzo di ARC.
1 avvertimento: perdi alcune caratteristiche se devi scegliere come target < iOS 5, come azzeramento dei riferimenti deboli . Se vuoi andare intero su ARC, probabilmente stai meglio puntando a iOS 5.