iPhone:Использование статической библиотеки в приложении приводит к сбою устройства, но не симулятора iPhone

StackOverflow https://stackoverflow.com/questions/1548453

Вопрос

У меня есть библиотека, которую я создал, и теперь я хочу использовать ее в приложении.Я полагаю, что правильно подключился к библиотеке.Вот все, что я сделал:

  • Задайте путь поиска по заголовку
  • Установите для других флагов компоновщика значение "-ObjC".
  • Добавлена статическая библиотека xcode project
  • Убедился, что lib.a был указан в качестве целевого объекта фреймворка
  • Добавлена библиотека как прямая зависимость

Как я уже сказал в названии, я успешно запустил приложение со статической библиотекой в симуляторе.Как только я пытаюсь протестировать приложение с помощью устройства, оно выходит из строя в ту же секунду, как ему приходится использовать функцию из библиотеки:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSDate firstOfCurrentMonth]: unrecognized selector sent to class 0x3841bb44'
2009-10-10 12:45:31.159 Basement[2372:207] Stack:
Это было полезно?

Решение

Это связано с ошибкой в текущем компоновщике SDK.Видишь этот пост для получения дополнительной информации о проблеме и возможных обходных путях.(также смотрите этот пост.)

Обновить:

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

Другие советы

Недавно я столкнулся с этой проблемой.Мне не удалось заставить -all_load работать, когда я заметил, что другая категория, которая у меня была, ДЕЙСТВИТЕЛЬНО работала.Я был ленив для этой категории и включил ее в другой файл.

В конце концов я создал фиктивный класс (без методов, переменных экземпляра) и включил реализацию моих категорий в файл .m для этого фиктивного класса.После этого мои категории начали работать даже после того, как я снял флаг -all_load.

Это было на iPhone OS 3.1.3.

Это, конечно, неправильный способ исправить ситуацию, но, похоже, это сработало.

Полный пример кода есть на моем Блог для моих (тривиальных) категорий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top