2015-01-21 4 views
0

В рамках1 существует отдельная категория класса A. Если я использую framework1 в приложении напрямую, все в порядке.непризнанный селектор для категории

Если я связываю framework1 и некоторые другие фреймворки, используя флаг ссылки -ObjC и '-framework framework1', чтобы создать составную структуру2. Когда я использую framework2 в приложении, он вылетает из-за отсутствия методов, определенных в категории classA.

Используя команду nm для проверки двоичного объекта framework2, я могу найти частную категорию.

Это действительно странно, и я не знаю почему.

Код выглядит примерно так.

Framework1 -> classA.m

@interface classA(Private) 
+ (void)method1; 
@end 

@implementation classA(Private) 
+ (void)method1{} 
@end 

@implementation classA 
+ (void)method2 
{ 
    [self method1]; 
} 
@end 

Тогда я компилирую Framework1 в перемещаемом формате.

В Framework2 я импортирую Framework1. Добавьте «-ObjC» и «-framework Framework1». Затем скопируйте Framework2 как перемещаемый.

Использование Framework2 в приложении, компиляция и запуск в порядке. Но когда запускается метод2 класса А, приложение вылетает из-за отсутствия метода-метода1. Если я использую Framework1 непосредственно в приложении, все в порядке.

Вопрос закрыт! Я понял, что если все фреймворки скомпилированы как статические и внедряют framework1 в framework2, используя другие библиотечные флаги. Добавьте флаг -ObjC в последнюю демонстрационную версию приложения. Все идет хорошо. Загружаются все категории.

+0

Вы публикуете и импортируете правильные файлы заголовков? –

+0

ДА, после объединения фреймворков в один, я обрабатываю заголовки для ссылок. Частная категория classA используется внутренне другими методами класса A и не является общедоступной. – wqyfavor

+0

Framework1 построен как файл перемещаемого объекта, а объединенный framework2 также является перемещаемым объектом. – wqyfavor

ответ

0

Вопрос закрыт! Я понял, что если все фреймворки скомпилированы как статические и внедряют framework1 в framework2, используя другие библиотечные флаги. Добавьте флаг -ObjC в последнюю демонстрационную версию приложения. Все идет хорошо. Загружаются все категории.

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