web-dev-qa-db-fra.com

Comment puis-je corriger cette erreur: "ARC interdit l'envoi de message explicite de" libération "dans Xcode"

J'essaie de créer une simple image d'animation dans l'iPhone à partir d'un tableau d'images:

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

Comment puis-je réparer cela?

34
Victor Barba

Solution n ° 1:

Supprimez simplement la déclaration de version. ARC s'en chargera pour vous.

[imageArray release]; // remove this line

ARC est le comptage de référence automatique. Contrairement au comptage manuel des références.
Il y a quelques excellentes vidéos de discussions de la WWDC. Je peux fournir le lien si vous souhaitez les regarder.

Dans Transition vers ARC Release Notes , voir ARC applique de nouvelles règles:

Vous ne pouvez pas invoquer explicitement dealloc, ni implémenter ou appeler keep, release , retentionCount ou autorelease.

L'interdiction s'étend à l'utilisation de @selector (conserver), @selector (libérer), etc.

Solution n ° 2:

Si vous ne souhaitez pas convertir le code en ARC (par exemple, vous n'écrivez pas une nouvelle application, mais en conservez une ancienne/ou vous avez importé tellement de code que le passage à ARC ne vaut pas la peine), vous pouvez désactiver ARC.

  • Désactivation d'ARC pour les fichiers sélectionnés Pour désactiver ARC, vous pouvez utiliser le -fno-objc-arc drapeau du compilateur pour des fichiers spécifiques. Sélectionnez la cible et accédez à Build Phases -> Compile Sources. Modifiez le Compiler Flags et ajouter -fno-objc-arc

  • Désactivation de l'ARC pour le projet
    Source: Comment désactiver le comptage automatique des références Xcode4.2

    • Cliquez sur votre projet, dans l'organiseur de gauche.
    • Sélectionnez votre cible, dans la colonne suivante.
    • Sélectionnez l'onglet Paramètres de construction en haut.
    • Faites défiler jusqu'à "Objective-C Automatic Reference Counting" (il peut être répertorié comme
    • "CLANG_ENABLE_OBJC_ARC" sous le groupe de paramètres définis par l'utilisateur) et définissez-le sur NO.
78
Jean