Undefined символы: "_OBJC_CLASS_ $ошибка
Я просматривал бесчисленные сообщения об этой ошибке:
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
является подклассом UIView
, а структура UIKit
включена. BoxView.h
был импортирован в ViewController.
ViewController содержит этот код:
-(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];
}
И BoxView
содержит этот код:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// no further initialization
}
return self;
}
Это строка, вызывающая ошибку, из приведенного выше кода:
BoxView *newView = [[BoxView alloc] initWithFrame:rect];
Когда я изменяю BoxView
на UIView
в этой строке, ошибка исчезает. Кто-нибудь знает, что мне нужно изменить здесь? Я просмотрел много сообщений об этом, но большинство ответов говорят, что это связано с ссылкой, но я пробовал тикать и расклеивать определенные коробки без успеха. Мне интересно, ошибка ли в моем коде? Любые предложения будут оценены!
Ответы
Ответ 1
В общем случае это произойдет, когда код для BoxView
не будет правильно скомпилирован в вашу цель.
![identity editor screenshot]()
Вам нужно убедиться, что цель, которую вы создаете, имеет соответствующее поле для вашего файла реализации BoxView.m
. Ваш вопрос предполагает, что вы пробовали это, но вот скриншот (из Xcode 4) просто для ясности.
"Чистота и сборка" никогда не болит.
Ответ 2
Я просто хочу добавить, что ответ Бен Моше абсолютно прав. Но есть другой способ включить файлы для создания в целевых настройках.
![enter image description here]()
Ответ 3
Добавлен сценарий
Если ваш проект имеет модульные зависимости (каркас), перестройте их перед сборкой основного проекта.