2013-04-05 28 views
26

Ich versuche, „ARC explizite Nachricht senden von‚Freisetzung‘in Xcode verbietet“ eine einfache Animation Bild in iPhone von einem Bild-Array zu machen:Wie kann ich diesen Fehler zu beheben:

- (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 ====== 

Wie kann ich repariere das?

+1

Sie können ARC deaktivieren als Ihre Wahl Go [Link] [1], und versuchen. [1]: http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project?answertab=active# tab-top –

+0

Xcode hat das Werkzeug "Edit: Refactor: In Objective-C ARC konvertieren". –

Antwort

72

Lösung # 1:

einfach die Freigabeerklärung entfernen. ARC wird es für Sie verwalten.

[imageArray release]; // remove this line 

ARC ist automatische Referenzzählung. Im Gegensatz zur manuellen Referenzzählung.
Es gibt ein paar tolle Videos von Gesprächen von WWDC. Ich kann den Link bereitstellen, wenn Sie sie sehen möchten.

In Transitioning to ARC Release Notes finden ARC Enforces Neue Regeln:

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.

Lösung # 2:

Wenn Sie den Code nicht zu ARC konvertieren möchten (zB Sie sind nicht eine neue Anwendung schreiben, aber eine alte beibehalten/oder Sie haben so viel Code importiert, dass es sich nicht lohnt, ARC zu verwenden) Sie können ARC deaktivieren.

  • ARC Deaktivierung für ausgewählte Dateien ARC zu deaktivieren, können Sie den -fno-objc-arc Compiler-Flag für bestimmte Dateien verwenden. Wählen Sie das Ziel und gehen Sie zu Build Phases ->Compile Sources. Bearbeiten Sie die Compiler Flags und fügen Sie -fno-objc-arc hinzu.

  • ARC Deaktivieren für das Projekt
    Quelle: How to disable Xcode4.2 Automatic Reference Counting

    • Klicken Sie auf Sie Projekt, in der linken Hand Veranstalter.
    • Wählen Sie Ihr Ziel, in der nächsten Spalte über.
    • Wählen Sie oben die Registerkarte Buildeinstellungen.
    • Scroll down auf „Objective-C Automatische Referenzzählung“, und setzen Sie sich auf NO (es kann als
    • „CLANG_ENABLE_OBJC_ARC“ unter der Benutzerdefinierte Einstellungen Gruppe aufgeführt werden).
+1

Sie sollten jedoch wahrscheinlich auf Lösung # 2 näher eingehen. Insbesondere ist die '-fno-objc-arc'-Flagge dein Freund. –

+0

@ RichardJ.RossIII: Fertig. – Jean

+0

Ich entfernte die Linie ... –

Verwandte Themen