web-dev-qa-db-fra.com

Symboles non définis: "_OBJC_CLASS_ $ error

J'ai parcouru d'innombrables articles sur cette erreur: 

Undefined symbols:
"_OBJC_CLASS_$_BoxView", referenced from:
  objc-class-ref-to-BoxView in ViewMovingViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

BoxView est une sous-classe de UIView et le cadre UIKit a été inclus. BoxView.h a été importé dans le ViewController. 

Le ViewController contient ce code: 

-(void) addBoxViewAtLocation:(CGPoint)point {
    CGRect rect;  
    rect.Origin.x = point.x;  
    rect.Origin.y = point.y;  
    rect.size.width = 80;  
    rect.size.width = 40;  
    BoxView *newView = [[BoxView alloc] initWithFrame:rect];  
    newView.backgroundColor = [UIColor yellowColor];  
    [mainView addSubview:newView];  
}  

Et BoxView contient ce code: 

- (id)initWithFrame:(CGRect)frame {     
    self = [super initWithFrame:frame];  
    if (self) {  
        // no further initialization  
    }  
    return self; 
}  

C'est la ligne qui cause l'erreur, d'après le code ci-dessus:

BoxView *newView = [[BoxView alloc] initWithFrame:rect];

Lorsque je remplace BoxView par UIView dans cette ligne, l'erreur disparaît. Est-ce que quelqu'un sait ce que je dois changer ici? J'ai parcouru de nombreux articles à ce sujet, mais la plupart des réponses disent que c'est lié à un lien, mais j'ai essayé de cocher et décocher certaines cases sans succès. Je me demande si l'erreur est dans mon code? Toute suggestion serait appréciée!

20
cms

En général, cela se produit lorsque le code pour BoxView n'est pas compilé correctement dans votre cible.

identity editor screenshot

Vous devez vous assurer que la case correspondante de la cible que vous construisez est cochée pour votre fichier d'implémentation BoxView.m. Votre question suggère que vous avez essayé cela, mais voici une capture d'écran (de Xcode 4) juste pour des raisons de clarté.

Un «Clean and Build» ne fait jamais de mal non plus.

42
Ben Mosher

Je veux juste ajouter que la réponse de Ben Mosher est tout à fait juste. Mais il existe un autre moyen d'inclure les fichiers à intégrer aux paramètres de la cible.

enter image description here

1
Enrico Susatyo