Категории в статической библиотеке для iPhone 3.0 - PullRequest
8 голосов
/ 18 июля 2009

У меня есть категории в моей статической библиотеке. Любой разработчик приложения должен установить флаг -ObjC на «Другие флаги компоновщика», чтобы правильно использовать мою статическую библиотеку. Он отлично работает для устройств iPhone / iPhone Simulator 2.x и iPhone Simulator 3.0. Но он вылетает для iPhone 3.0. Как написано в этой статье это новая ошибка компоновщика. Они предлагают использовать еще один флаг компоновщика: -all_load. Но когда я добавляю этот флаг, сборка также завершается неудачно, потому что есть повторяющиеся символы.

Как использовать категории в статических библиотеках для устройства iPhone 3.0? Есть предложения?

Ответы [ 4 ]

10 голосов
/ 18 июля 2009

Мы столкнулись с той же проблемой (до версии 3.0, -ObjC больше не ссылается на категории) в рамках Core Plot Framework . Все, что я могу сказать, это то, что для нас мы смогли добавить опцию -all_load к другим флагам компоновщика в целевом приложении, и это позволило устранить ошибки времени выполнения. Мы не увидели предупреждений о дублировании символов.

Я отправил отчет об ошибке для поведения компоновщика, как, я уверен, другие.

1 голос
/ 18 июня 2010

Это ошибка, вызванная попыткой исправить другую ошибку с помощью хака. Исправление -all_load для ошибки категории - это полный взлом.

Подробнее см. здесь .

0 голосов
/ 20 декабря 2009

Я столкнулся с той же проблемой «дубликатов символов». Без флага -all_load нам пришлось бы также включить все библиотеки, с которыми связана наша библиотека, в строку ссылки приложения. Удаление их из линии связи приложения решило проблему.

0 голосов
/ 17 декабря 2009

Когда вы добавляете -all_load к другим флагам компоновщика, убедитесь, что все фреймворки, используемые библиотекой, связаны с вашим целевым приложением. В противном случае он не сможет скомпилироваться. В моем случае у меня была категория для MKMapView, и я не связывал MapKit Framework с моим целевым приложением, поэтому класс, к которому принадлежит категория, не был найден во время сборки.

...