Категория Objective C не загружается при добавлении в качестве зависимости

У меня есть проект с категорией для NSString, как показано ниже.

@interface NSString (DataEncoding)

- (NSString *)com_EncryptWithISBN;

@end

@implementation NSString (DataEncoding)

- (NSString *)com_EncryptWithISBN
{
    return [self com_EncryptWithKey:[HMHBundleInfoAccess sharedInstance].ISBN];
}
@end

У меня есть это в другом проекте (B), и он отлично работает в этом проекте. Теперь я переместил проект B в другой проект A. Теперь тот же код дает мне ошибку

Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[__NSCFString com_EncryptWithISBN]: нераспознанный селектор отправлен в экземпляр 0xd334600»

Я сомневаюсь, что категория не связана должным образом при добавлении в качестве подпроекта проекта А.

Я видел эту ссылку, но без изменений . Нужно ли добавлять проект Б в качестве целевой зависимости для проекта А?

Любая помощь высоко ценится.

Спасибо


person Zach    schedule 01.07.2014    source источник
comment
просто скопируйте код категории в проект a. если вы используете какао-бобы, вы можете создать репозиторий git для всех категорий и добавить репозиторий git в свои кокосовые стручки. Это очень много работы всего для двух проектов.   -  person John    schedule 01.07.2014


Ответы (1)


Добавьте заголовок NSString+DataEncoding.h (заголовок вашей категории) к файлам, где вы используете шифрование (где вы выполняете этот селектор).

person skyylex    schedule 11.07.2014
comment
Это неправильно. Если бы не было заголовка, он бы не скомпилировался. Но он получает исключение, так что это ошибка времени выполнения. - person HAS; 11.07.2014
comment
Не обязательно. Возможно, вызовы выполнялись через PerformSelector:. - person skyylex; 11.07.2014
comment
Если вы используете -[performSelecor:], вы также должны включить -Wstrict-selector-match! ;) Подробнее см. этот ответ. И тогда это будет ошибка времени компиляции;) - person HAS; 11.07.2014
comment
Я не знал об этом. Если этот флаг включен, мой ответ бесполезен. Согласен с тобой. - person skyylex; 11.07.2014