Dovrei leggere un capitolo sulla gestione della memoria se ora un giorno usiamo principalmente ARC?

2

Sto leggendo un libro sull'Obiettivo C e mi sono chiesto due cose:

  1. Dovrei prendere il tempo per leggere un intero capitolo sulla gestione della memoria?
  2. Se stai facendo un ottimo lavoro sulla gestione manuale, puoi ottenere prestazioni migliori rispetto all'utilizzo di ARC?
posta JohnBigs 08.03.2013 - 03:37
fonte

4 risposte

1

Tu puoi fare meglio, ma anche tu potrebbe finire molto peggio (introducendo perdite e arresti anomali).

Direi che dovresti leggere a riguardo, ma comunque usa ARC come default. Quando è necessario, sostituire ARC per determinati file e gestire autonomamente le proprie allocazioni / release.

Raccomando l'articolo di Ray sulla gestione della memoria. Descrive alcune pratiche che aiutano molto. Obj-C si occupa più di "convenzioni" e coerenza rispetto alle regole del linguaggio, quindi l'apprendimento di tali convenzioni è un must se stai facendo una gestione manuale della memoria.

    
risposta data 08.03.2013 - 09:00
fonte
7

Per rispondere alla prima domanda:



Riguardo alla seconda domanda, puoi sicuramente fare meglio di ARC. La gestione automatizzata delle risorse in qualsiasi lingua è sempre un approccio euristico che non può mai interpretare le intenzioni del programmatore al 100%. Quando si sceglie di controllare questo processo, si avrà quasi sempre meno chiamate alloc / gratuite per una determinata esecuzione del programma. Ciò significa più efficienza, (solitamente) meno frammentazione della memoria e, purtroppo, lo sfortunato compito di doversi preoccupare delle perdite di memoria.

La gestione della memoria (e i puntatori / aliasing) tendono ad essere insegnati alle persone con lo stigma della difficoltà. Questo è un errore orribile. Questi concetti sono in realtà abbastanza semplici e fondamentali su come funziona la macchina che stai operando. Affronta loro in anticipo e presto, e sarai una forza con cui fare i conti.

Detto questo, a meno che tu non abbia una ragione specifica per usare MRC, ARC ti farà risparmiare tempo per il debug e ti consentirà di scrivere codice più sicuro più velocemente.

    
risposta data 08.03.2013 - 04:48
fonte
3

Sì, dovresti leggerlo. La gestione automatica della memoria di qualsiasi tipo non è magica; come ogni astrazione, non è perfetto e infallibile. Quando sei confrontato con i suoi limiti o qualcosa di difficile da capire, vale la pena di sapere cosa sta succedendo dietro le quinte. Inoltre ci sono molte librerie di terze parti che non usano ARC quindi potresti non avere l'opzione di usare solo ARC.

    
risposta data 08.03.2013 - 04:01
fonte
0

Come le altre risposte dicono che dovresti leggerlo per capire cosa fa e ci sono ancora molti codici non ARC là fuori in vari progetti che potresti voler usare ma vorrei sottolineare che anche anche se è possibile battere ARC in termini di prestazioni, probabilmente non lo farai e lo sforzo per la gestione manuale della memoria potrebbe essere speso altrove.

    
risposta data 08.03.2013 - 08:33
fonte

Leggi altre domande sui tag