2011-06-17 3 views
2

Lorsque je crée un nouveau projet avec XCode 4.2 (une vue unique iOS App, par exemple) le main.m-fichier dans le "soutien Files" -folder ressemble à:XCode 4.2 d'erreur du compilateur

#import <UIKit/UIKit.h> 
#import "iiiAppDelegate.h" 

int main(int argc, char *argv[]) 
{ 
    int retVal = 0; 
    @autoreleasepool { 
    retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class])); 
    } 

    return retVal; 
} 

Le paramètre du compilateur (dans les paramètres de construction) est le LLVM Apple 3.0. Quand je le change en GCC 4.2 ou en LCCVM GCC4.2, il montre des erreurs avec le main.m.

Il n'y a pas @autoreleasepool ...

quel paramètre dans mon Xcode peut causer des ennuis? Pourquoi le compilateur standard pour les nouveaux projets Apple 3.0LLVM au lieu du compilateur par défaut du système (GCC4.2) ??

Répondre

3

@autoreleasepool est une nouvelle fonctionnalité ajoutée dans LLVM 3.0. Cela ne fonctionne tout simplement pas avec les autres compilateurs que vous avez essayés.

+0

Et comment puis-je réinitialiser les options, que le code généré automatiquement pour les nouveaux projets compilable avec le GCC 4.2? – Benny

+0

Je ne sais pas si c'est possible du tout - peut-être que les modèles sont faits comme ceci (mais n'ont pas vérifié). Cela se rapproche maintenant de NDA, mieux vaut demander sur developer.apple.com – Eiko

6

Pour répondre à votre première question:

quel paramètre dans mon Xcode peut causer des ennuis?

Le compilateur lui-même est le paramètre. Changer à LLVM 3.0 et pas plus de problèmes

Pour répondre à votre deuxième question:

Pourquoi le compilateur standard pour les nouveaux projets Apple 3.0LLVM au lieu du compilateur par défaut du système (GCC4.2) ??

LLVM 3.0 IS le compilateur par défaut du système pour Xcode 4.2.

Je pense que ce que vous êtes effectivement demander est de savoir comment corriger l'erreur lorsque vous n'utilisez pas LLVM 3.0. Pour ce faire, vous voulez remplacer @autoreleasepool avec NSAutoreleasePool comme ceci:

int main(int argc, char *argv[]) { 
    int retVal = 0; 

    // @autoreleasepool { 
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

  retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class])); 

      [pool drain]; 
    // } 

    return retVal; 
}