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:
- Selezionate la radice del progetto
MyFirstGame
dal Project Navigator di Xcode; - Scegliete il target
MyFirstGame
; - Aprite il tab
Build Phases
; - Aprite la sezione
Compile Sources
- Ora dovrete selezionare tutti i sorgenti da
CCAction.m
fino avec4.c
; - 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
; - Infine premete Invio.
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...
Selezionate solo gli ultimi 4 file, ovvero main.m
, AppDelegate.m
, HelloWorldLayer.m
e IntroLayer.m
. Premete Check
e poi Next
.
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.