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!
En général, cela se produit lorsque le code pour BoxView
n'est pas compilé correctement dans votre cible.
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.
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.