2009-07-22 3 views
2

Я добавил расширение к NSData (расширение base64), которое я сохранил над отдельным проектом класса инфраструктуры класса. Но когда я использую этот метод из моего основного проекта, я получаю такую ​​ошибку: "- [NSConcreteData encodeBase64]: нераспознанный селектор, отправленный в экземпляр 0x121e60 '".NSConcreteData vs NSData

Но если я сохраню один и тот же класс в своем основном проекте, это будет выполнено без какой-либо проблемы.

Я вызываю этот метод следующим образом: [dev setToken: [token encodeBase64]];

Пожалуйста, сообщите, почему это не работает, если я добавлю расширение в другой проект. (Я уже использую некоторые другие расширения, например, для NSDate, например, без каких-либо проблем.)

ответ

0

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

+0

Я уже добавил -ObjC в «Другие связанные флаги» – Sreehari

+0

В флагах для приложения или библиотеки? –

+0

Я добавил и в приложение, и в lib. – Sreehari

3

Это на iPhone OS 3.0? 3.0 SDK broke the use of -ObjC, но вы обычно можете ссылаться в категориях для статической библиотеки, добавив параметр -all_load в Other Linker Flags в целевое приложение.

Смежные вопросы