È meglio indirizzare iOS 5 e ARC o una versione precedente con MRC?

6

Personalmente non ne so molto di iOS 5, ma sembra che con il conteggio dei riferimenti automatico (ARC), ci si liberi di gran parte dei problemi di gestione della memoria dei precedenti sistemi operativi.

Quindi è meglio scegliere come target iOS5 (e creare app che possono essere eseguite solo sui nuovi dispositivi iOS), o è meglio per lei scegliere come target iOS 4 o anche iOS 3, in modo che comprenda i fondamenti della gestione della memoria in Objective -C? Ci sono aspetti importanti dello sviluppo di iOS che potrebbero perdere saltando su iOS 5?

    
posta Apophenia Overload 08.12.2011 - 21:52
fonte

3 risposte

15

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.

    
risposta data 08.12.2011 - 22:16
fonte
0

Circa 500.000 app sono state scritte senza ARC, molte dai bambini. Anche molti milioni di potenziali utenti di app con dispositivi non (ancora) su iOS 5. Molti sviluppatori stanno aspettando che quel numero sia una frazione minore della loro potenziale quota di mercato prima di saltare strettamente a iOS 5. E l'esperienza con la gestione manuale della memoria potrebbe essere molto utile quando rintracciare bug nelle future app che usano ARC.

Quindi, in questo momento, potrei consigliarti di imparare entrambi, utilizzando MRC per le app di oggi e ARC per le app future.

    
risposta data 15.12.2011 - 00:47
fonte
0

1) come programmatore serio, non puoi perdere la piena comprensione di MRC.

2) in determinate situazioni (CF ...) Devi saperlo.

3) ARC è molto fine e utile. (Sono venuto da malloc / gratuito MA lo apprezzo ..)

4) Le indicazioni Apple dall'ultimo wwdc2012 (ci sono stato ..) erano USE ARC! Periodo! Infatti tutto il nuovo codice è scritto per ARC.

    
risposta data 17.08.2012 - 17:10
fonte

Leggi altre domande sui tag