Dans mon cas, cette erreur a été causée par cyclique "Importer" des déclarations en deux classes: le fichier d'en-tête pour chaque classe inclus l'en-tête de l'autre catégorie, résultant dans l' Inconnu du nom de type 'ClassA'; as-tu veux dire "ClassB'? erreur:
C'est de cette façon mes déclarations d'importation ont été configurés lorsque j'ai eu cette erreur. En ClassA.h
:
Import "ClassB.h"
En ClassB.h
:
Import "ClassA.h"
Pour le fixer, j'ai utilisé l' @class
avant la déclaration de la directive à l'avant-déclarer ClassA en ClassB.h
(cela promet le pré-compilateur qui ClassA est une classe valide, et qu'il sera disponible au moment de la compilation). Par exemple:
En ClassA.h
:
Import "ClassB.h"
En ClassB.h
:
@class ClassA;
Cette correction de l' Inconnue nom du type 'ClassA' erreur, mais a également introduit un nouveau message d'erreur: ClassB.m
: Récepteur de type 'ClassA", par exemple de message est une déclaration anticipée. Par exemple:
Pour résoudre cette nouvelle erreur, j'ai dû importer ClassA.h
au-dessus de la mise en œuvre de fichier de ClassB (ClassB.m
). Les deux erreurs sont maintenant résolus et j'obtiens zéro les erreurs et les avertissements.
Par exemple, j'ai maintenant:
En ClassA.h
:
Import "ClassB.h"
En ClassB.h
:
@class ClassA;
En ClassB.m
:
Import "ClassA.h"
Les deux messages d'erreur sont maintenant résolus.