Propriétés de l'ARC et de l'IBOutlet faible
Je viens de mettre à jour un projet de faire usage de l'ARC avec Xcode 4.2 intégré dans l'outil de conversion. Malheureusement, il y a un bug bizarre apparaissant que je ne comprends pas et ne trouve rien à ce sujet. J'ai une classe de document avec une déclaration de propriété:
@property (weak) IBOutlet WebView *webView;
Dans la mise en œuvre de fichier j'ai un @synthétiser déclaration:
@synthesize webView=_webView;
Lorsque j'essaie de compiler, il échoue et me dit:
erreur: @synthétiser de "faible" de la propriété n'est autorisé que dans l'ARC ou GC
mode
Bien sûr, le projet est marqué pour compiler avec l'ARC. Je serais très reconnaissant de toute aide pour comprendre ce que je fais de mal et pourquoi.
Edit: A la fin de la journée d'hier. Voici donc une vue plus complète de la compilation du journal:
[...] -fobjc-arc-Wno-trigraphs -fpascal-cordes -O0 -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-inutilisé-paramètre -Wunused-variable -Wunused-valeur -Wshorten-64-32 -DDEBUG=1 -isysroot /Developer/SDKs/MacOSX10.7.sdk -fasm-blocs-mmacosx-version-min=10.7 -gdwarf-2 -Wno-signe-conversion "-DIBOutlet=attribut((iboutlet))" "-DIBOutletCollection(ClassName)=attribut((iboutletcollection(ClassName)))" "-DIBAction=void)attribut((ibaction)" -iquote [...]/Build/Intermédiaires/[...].build/Debug/[...].construire/[...]-généré-fichiers.hmap -je[...]/Build/Intermédiaires/[...].build/Debug/[...].construire/[...]-propre-cible-les en-têtes.hmap -je[...]/Build/Intermédiaires/[...].build/Debug/[...].construire/[...]-tous-cible-les en-têtes.hmap -iquote [...]/Build/Intermédiaires/[...].build/Debug/[...].construire/[...]-projet-en-têtes.hmap -je[...]/Construction/Produits/Debug/include -I[...]/Build/Intermédiaires/[...].build/Debug/[...].construire/DerivedSources/x86_64 -je[...]/Build/Intermédiaires/[...].build/Debug/[...].construire/DerivedSources -F[...]/Construction/Produits/Debug -fno-objc-arc [...]
Il semble que le compilateur-les paramètres de l'ARC sont activés dans le début et à l'arrêt de nouveau plus tard dans les arguments de la liste. Pour être honnête: je ne sais pas où pour supprimer ces étranges paramètres et comment il est venu à cela. La seule solution que j'viendrait à maintenant, serait de commencer le projet complet d'une vierge et un nouveau et importer tous les fichiers de classe à partir de zéro.
Si quelqu'un connaît un moyen plus facile, j'apprécierais beaucoup.
PS: j'ai tous de construire-les paramètres concernant l'ARC défini à OUI.
source d'informationauteur Jacque
Vous devez vous connecter pour publier un commentaire.
Que dans l'ARC, nous devons utiliser
weak
bien et sans ARC, nous devons utiliserunsafe_unretained
il en est de même des moyens pour l'ARC, nous devons utiliseret sans ARC
Pour info: Pour quelqu'un d'autre, rongé par le "@synthétiser de "faible" de la propriété n'est autorisé que dans l'ARC ou GC en mode" erreur:
Si vous avez essayé toutes les solutions proposées dans ce fil et il ne se construit pas, essayez de fermer le projet Xcode (Fichier > Fermer le Projet) puis de le ré-ouvrir le projet et essayer de construction à nouveau.
Pour quelqu'un d'autre en cours d'exécution dans le présent, si vous avez converti votre projet en parties à l'ARC, vérifiez que vous n'avez pas l'-pas-obj-arc drapeau sur les fichiers, c'est de se plaindre.
J'ai pris un peu plus de temps aujourd'hui et fait une nouvelle conversion à partir d'une précédente livraison du projet. Cette fois, tout s'est bien passé. Je suppose que cette erreur est né de moi en essayant de faire la conversion en 2 étapes distinctes. Le projet est divisé en 2 composants. Je voulais les convertir séparément. C'est pourquoi je n'ai pas sélectionner tous les fichiers lors de la première conversion exécuter. À mon grand étonnement la première conversion s'est très facilement et en moins de temps que ce que j'attendais. J'ai donc décidé de convertir la deuxième composante du projet. Ce que j'ai, le projet a l'état décrit comme le problème ci-dessus: conflictuelle de l'accumulation de paramètres.
Un bon conseil pourrait être de ne pas essayer de convertir un projet en étapes, mais de prendre un couple de plus de temps et de faire à la fois. Je dois assumer: la conversion en fonction de Xcode pourrait ne pas être destiné à une telle procédure.
Essayer de marquage explicite avec -fobjc-arc comme les drapeaux de compilation dans les Phases de construction
Au cas où quelqu'un d'autre tombe sur ceci:
J'ai juste corrigé ce problème en définissant "Objective-C Garbage Collection" à "non pris en charge" dans les Paramètres de construction. Cela a été définie sur OUI pour une raison quelconque, et qui a provoqué l'ARC construire de ne pas travailler.
Ok, juste au cas où quelqu'un d'autre a le même problème que moi, j'étais en ajoutant des éléments d'INTERFACE utilisateur comme les propriétés ci-dessous la clôture "}" de mon @interface, au lieu de l'intérieur. Une fois que j'ai supprimé les @property et @synthétiser des entrées dans le .h/.m de fichiers et ré-lié éléments de l'INTERFACE utilisateur au sein de l' @interface{ } de la section, il a travaillé.
Dans mon cas, j'ai trouvé que le fait de changer le Paramètre de construction "Compilateur C/C++/Objective-C" dans la catégorie "Build Options" à la valeur par défaut ("Apple LLVM compilateur 3.0") ont résolu ce problème.
Il avait été "LLVM GCC 4.2", et plus bas, dans la catégorie '... complier 3.0 - Langue", l'option de sélection d'ARC ("Objective-C Automatique de Comptage de Référence") n'était même pas visible.
C'était particulièrement bizarre parce que j'ai un autre projet déjà converti à l'ARC, et bien que le compilateur choisi était aussi "LLVM GCC 4.2", néanmoins le "Langage" de la catégorie était encore intitulé "Apple LLVM compilateur 3.0', et la possibilité de sélectionner ARC était visible.
Même compilateur choisi, pourtant différentes options offertes pour le compilateur. Bizarre.
J'ai aussi rencontré le même problème. L'erreur que j'ai commise a été que dans les Phases de construction-> Compiler les Sources que j'ai mis le drapeau d'un pays non fichier ARC "-fno-objc-d'arc". Je voulais qu'il soit ajouté à un non fichier ARC. Je l'ai enlevé et il a commencé à travailler correctement.