Подтвердить что ты не робот

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 в этой строке, ошибка исчезает. Кто-нибудь знает, что мне нужно изменить здесь? Я просмотрел много сообщений об этом, но большинство ответов говорят, что это связано с ссылкой, но я пробовал тикать и расклеивать определенные коробки без успеха. Мне интересно, ошибка ли в моем коде? Любые предложения будут оценены!

4b9b3361

Ответ 1

В общем случае это произойдет, когда код для BoxView не будет правильно скомпилирован в вашу цель.

identity editor screenshot

Вам нужно убедиться, что цель, которую вы создаете, имеет соответствующее поле для вашего файла реализации BoxView.m. Ваш вопрос предполагает, что вы пробовали это, но вот скриншот (из Xcode 4) просто для ясности.

"Чистота и сборка" никогда не болит.

Ответ 2

Я просто хочу добавить, что ответ Бен Моше абсолютно прав. Но есть другой способ включить файлы для создания в целевых настройках.

enter image description here

Ответ 3

Добавлен сценарий

Если ваш проект имеет модульные зависимости (каркас), перестройте их перед сборкой основного проекта.