Класс, полученный из NSClassFromString, не ассоциируется с классом, определенным в заголовочном файле - PullRequest
0 голосов
/ 28 ноября 2011

В следующем коде я использовал NSClassFromString для преобразования, скажем, NSString "ColorFilter" в имя класса ColorFilter.Результирующий класс ColorFilter, похоже, не ассоциируется с классом, определенным в моем заголовочном файле в операторе импорта с тем же именем.

в моем файле .h:

#import "ColorFilter.h"   //ColorFilter is a subclass of UIViewController which also has an iVars name imageView of UIImageView class

в моем.m file:

NSString *filter = @"ColorFilter";
UIViewController *myFilterClass = [[NSClassFromString(filter) alloc] initWithNibName:filter bundle:nil];

Ошибка, которую я получил из приведенной выше строки, была [ColorFilter initWithNibName: bundle:]: нераспознанный селектор, отправленный экземпляру ...

Для тестирования я изменил последнийстрока должна быть:

UIViewController *myFilterClass = [[NSClassFromString(filter) alloc] init];
myFilterClass.imageView = .....;

Теперь я получил ошибку - [ColorFilter setImageView:]: нераспознанный селектор отправлен в экземпляр ...

Мой вывод заключается в том, что созданный класс ColorFilterNSClassFromString ничего не знает об этом #import "ColorFilter.h".

Есть идеи, в чем заключалась моя ошибка?

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

ColorFilter.m может не скомпилироваться с вашим приложением.На вкладке источников сборки вашего проекта в разделе источников компиляции вы видите "ColorFilter.m"?Если нет, перетащите его в этот список.

0 голосов
/ 29 ноября 2011

Я обнаружил, что в одной из моих статических библиотек уже определен класс "ColorFilter".

Похоже, что во время компиляции можно перезаписать существующий класс в статической библиотеке.Но во время выполнения классы в статической библиотеке имеют приоритет над динамически генерируемыми классами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...