Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestione della memoria: Automated Reference Counting

Perchè utilizzare ARC di iOS, il sistema che solleva lo sviluppatore dalla gestione manuale della memoria.
Perchè utilizzare ARC di iOS, il sistema che solleva lo sviluppatore dalla gestione manuale della memoria.
Link copiato negli appunti

Con iOS 4 Apple ha introdotto il sistema ARC (Automated Reference Counting) per sollevare lo sviluppatore dalla gestione manuale della memoria. È consigliabile utilizzare ARC nel proprio progetto in quanto gli errori nella gestione manuale della memoria sono molto frequenti e non c'è motivo per non lasciare ad ARC questo compito ripetitivo. Inoltre senza dover invocare in continuazione e vari metodi retain e release otterrete un codice più essenziale e leggibile.

cocos2d non è stato scritto utilizzando ARC, infatti se aprite i sorgenti che lo compongono noterete una gestione della memoria manuale. Questo non vi impedisce di usare ARC nel vostro codice. Bisogna semplicemente attivare ARC per il vostro progetto e segnalare a Xcode di non usare ARC per i sorgenti di cocos2d-iPhone.

Ecco come fare, prima di tutto dovrete dire a Xcode di non usare la tecnologia ARC sui sorgenti di cocos2d-iPhone quindi:

  1. Selezionate la radice del progetto MyFirstGame dal Project Navigator di Xcode;
  2. Scegliete il target MyFirstGame;
  3. Aprite il tab Build Phases;
  4. Aprite la sezione Compile Sources
  5. Ora dovrete selezionare tutti i sorgenti da CCAction.m fino a vec4.c;
  6. Una volta che sono selezionati, doppio click sul nome di uno di questi. Si aprirà una casella di testo in cui dovrete incollare questo comando: -fno-objc-arc;
  7. Infine premete Invio.
Figura 09. Project Navigator

Project Navigator

Se usate Xcode 5 i file potrebbero non essere ordinati come mostrato in figura. In tal caso sappiate che dovete semplicemente aggiungere il flag -fno-objc-arc a tutti i file eccetto i seguenti 4:

  • main.m
  • AppDelegate.m
  • HelloWorldLayer.m
  • IntroLayer.m

Dopo averlo fatto selezionate Xcode > Preferences > General e attivate l'opzione "Continue building after errors".

Ora bisogna attivare ARC e rimuovere dai sorgenti main.m, AppDelegate.m, HelloWorldLayer.m e IntroLayer.m le istruzioni per la gestione manuale della memoria. Per fortuna penserà a tutto Xcode. Basta scegliere Edit > Refactor > Convert to Objective-C ARC...

Figura 10. Selezionare i file per la conversione
Selezionare i file per la conversione

Selezionate solo gli ultimi 4 file, ovvero main.m, AppDelegate.m, HelloWorldLayer.m e IntroLayer.m. Premete Check e poi Next.

Figura 11. Procedura guidata per la conversione
Procedura guidata per la conversione

Xcode vi mostrerà un'anteprima delle modifiche che apporterà ai sorgenti (fondamentalmente rimuovendo le istruzioni relative alla gestione manuale della memoria). Premete Save.

Xcode vi chiederà se volete creare uno snapshot prima dell'operazione, premete Disable.

Ora ARC è attivo, premete CMD+R per testare che tutto stia funzionando ancora.

La parte relativa alla configurazione è terminata. Adesso che avete un piccolo progetto di prova funzionante inizierete a vedere gli aspetti più interessanti che compongono un videogioco 2d basato su cocos2d-iPhone.

Ti consigliamo anche