Неизвестный класс myView в файле Interface Builder - PullRequest
1 голос
/ 06 сентября 2011

Я хотел назвать свое перо иначе, чем мои .h и .m файлы. Я думаю о представлении как об этом. Так что я не понимаю, почему «Контроллер» должен быть в названии, которое кажется соглашением. Когда я делаю это и проверяю, что делегаты, представления и т. Д. Установлены правильно, я получаю следующее предупреждение во время выполнения, когда загружаю myView.xib; Однако все работает так, как ожидалось. Я не люблю оставлять предупреждения в прошлом. Как мне от этого избавиться?

 Unknown class myView in Interface Builder file

myView.xib

<object class="NSMutableArray" key="dict.values">
    <bool key="EncodedWithXMLCoder">YES</bool>
    <string>myViewController</string>
    <string>UIResponder</string>
    <string>myView</string>

myViewController.h / м

@interface myViewController 

Я просмотрел все связанные темы по этой ошибке, и ни один из ответов или сценариев не соответствует 100%.

Ссылка: Неизвестный класс MyOldClass в файле Interface Builder - в моем случае grep будет показывать, что у меня есть ссылка на myView. Если я переименую это в myViewController, я получу следующее:

 -[myViewController _setViewDelegate:]: unrecognized selector sent to instance 0x186550
 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[myViewController _setViewDelegate:]: unrecognized selector sent to instance 0x186550'

Ссылка: Ошибка «Неизвестный класс в файле Interface Builder» во время выполнения

Я играл с идеями в этой теме, и это не сработало. -all_load -ObjC флаги не устраняют ошибку. Также KeepAlive не взламывает.

Однако я не думаю, что это ошибка ссылки. Класс myView существует в контексте пера. Так что это будет проблема динамической загрузки во время выполнения. Кроме того, MyView существует. Это вид в перо.

Должен ли я просто признать и сделать так, чтобы у моего файла nib было то же имя файла, что и у файлов .m и .h? Какие-нибудь мысли?

ТХ

1 Ответ

0 голосов
/ 06 октября 2012

Вы можете взглянуть на мое решение в этой теме , я дважды проверил, что все мои классы имеют соответствующий @implementation, указанный в их файлах .m.

...