2013-04-05 9 views
26

Sto cercando di fare un immagine semplice animazione in iPhone da un array di immagini:Come posso correggere questo errore: "ARC vieta messaggio esplicito inviare di 'rilascio' in Xcode"

- (void)viewDidLoad { 
    NSArray *imageArray; 
    imageArray = [[NSArray alloc] initWithObjects: 
        [UIImage imageNamed:@"sun1"], 
        [UIImage imageNamed:@"sun2"], 
        nil]; 
    fadeImage.animationImages = imageArray; 
    fadeImage.animationDuration = 1; 
    [imageArray release]; //==== HERE IS WHERE I GET THE ERROR ====== 

Come posso Aggiustalo?

+1

È possibile disattivare ARC come la vostra scelta Go [questo link] [1], e provare che. [1]: http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project?answertab=active# tab-top –

+0

Xcode ha lo strumento "Modifica: Refactor: Converti in Objective-C ARC". –

risposta

72

Soluzione # 1:

Basta rimuovere l'istruzione di rilascio. ARC lo gestirà per te.

[imageArray release]; // remove this line 

ARC è il conteggio di riferimento automatico. Al contrario del conteggio dei riferimenti manuale.
Ci sono alcuni grandi video di discorsi dal WWDC. Posso fornire il link se desideri guardarli.

In Transitioning to ARC Release Notes, vedere ARC impone nuove regole:

You cannot explicitly invoke dealloc, or implement or invoke retain, release, retainCount, or autorelease.

The prohibition extends to using @selector(retain), @selector(release), and so on.

Soluzione # 2:

Se non si desidera convertire il codice per ARC (ad esempio, non si è scrivendo una nuova applicazione, ma ne stai mantenendo una vecchia/o hai importato così tanto codice che passare a ARC non ne vale la pena) puoi disabilitare ARC.

  • Disattivazione ARC per i file selezionati Per disabilitare ARC, è possibile utilizzare il flag -fno-objc-arc compilatore per file specifici. Seleziona il target e vai a Build Phases ->Compile Sources. Modifica il Compiler Flags e aggiungi -fno-objc-arc.

  • Disattivazione ARC per il progetto
    Fonte: How to disable Xcode4.2 Automatic Reference Counting

    • Clicca su di voi progetto, l'organizzatore della mano sinistra.
    • Seleziona il tuo obiettivo, nella colonna successiva.
    • Selezionare la scheda Impostazioni di creazione nella parte superiore.
    • Scorri verso il basso fino a "Conteggio di riferimento automatico Objective-C" (potrebbe essere elencato come
    • "CLANG_ENABLE_OBJC_ARC" nel gruppo di impostazioni Definito dall'utente) e impostarlo su NO.
+1

Probabilmente dovresti elaborare la soluzione n. 2. Nello specifico, la bandiera '-fno-objc-arc' è tua amica. –

+0

@ RichardJ.RossIII: Fatto. – Jean

+0

Ho rimosso la linea ... –

Problemi correlati