Я добавил расширение к NSData (расширение base64), которое я сохранил в отдельном проекте библиотеки класса инфраструктуры. Но когда я использую этот метод из своего основного проекта, я получаю сообщение об ошибке, подобное этому: «-[NSConcreteData encodeBase64]: нераспознанный селектор отправлен в экземпляр 0x121e60'».
Но если я оставлю тот же класс в своем основном проекте, это будет выполнено без каких-либо проблем.
Я вызываю этот метод следующим образом: [dev setToken:[token encodeBase64]];
Пожалуйста, предложите, почему это не работает, если я поставлю расширение в другой проект. (Я уже использую некоторые другие расширения, например, для NSDate, как это без каких-либо проблем.)
2 ответа
Это на iPhone OS 3.0? SDK 3.0 нарушил использование -ObjC, но обычно вы можете связать категории для статической библиотеки, добавив параметр -all_load к другим флагам компоновщика в вашем целевом приложении.
Проблема в том, что метаданные, необходимые для настройки категории, обычно удаляются компоновщиком, потому что они кажутся мертвыми. Если вы добавите LDFLAG "-ObjC" в свой проект, он скажет компоновщику связать всю потенциальную информацию ObjC, даже если она кажется мертвой.
Похожие вопросы
Связанные вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].