Код ссылки в отдельном проекте в XCode 4.2

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

Возможно ли это сделать очень просто, или мне лучше просто отключить ARC для отдельных файлов? (кажется очень утомительным ..)

Можно ли использовать рабочее пространство? Где один проект – мое приложение для iOS, а другое – только сторонний код?

Я немного поиграл и много гугл, но просто не кажется, что у меня просто нет ничего, или я ошибаюсь?

Поэтому я понял это сам, с большой помощью из разных блогов. Что-то это основное должно быть более тривиальным и хорошо документированным … Но здесь мы идем, вот что я сделал, чтобы получить библиотеку для AsiHttpRequest:

  1. Создайте новый проект iOS. Выберите шаблон «Cocoa Touch Static Library». Назовите это, как хотите. Вы не хотите указывать «Использовать автоматический подсчет ссылок», поскольку AsiHttpRequest не поддерживает его.
  2. Выберите место для проекта библиотеки (это будет иметь значение позже).
  3. Удалите файлы по умолчанию .h- и .m, созданные Xcode.
  4. Перетащите файлы AsiHttpRequest в проект
  5. Вы можете добавить фреймворки, от которых зависит AsiHttpRequest, но вам все равно придется добавлять их в свой основной проект, поэтому это необязательно.
  6. Попробуйте построить проект, он должен делать это без ошибок.
  7. Откройте свой основной проект
  8. Из искателя перетащите вашу библиотеку .proj-file в свой основной проект (в Xcode, чтобы он «приземлился» на основной файл проекта)
  9. Теперь проект библиотеки должен появиться под вашим основным проектом (все еще в XCode). Он должен быть расширяемым, и вы также сможете увидеть файлы проектов библиотеки. Если это не так, попробуйте закрыть все открытые проекты и снова открыть основной проект.
  10. Выберите основной проект и выберите цель. В разделе «Фазы сборки» – «Связывание двоичных файлов с библиотеками» щелкните значок «+».
  11. В списке фреймворков вы должны увидеть свой проект библиотеки (называемый как libname.a). Выберите этот файл
  12. Недавно добавленный файл может выглядеть красным в списке фреймворков, не волнуйтесь, он все равно работает. Думаю, это ошибка.
  13. Все еще находясь под целевым назначением, перейдите к настройкам сборки
  14. В разделе «Пути поиска заголовков» добавьте относительный путь поиска туда, где находятся файлы .h-файлов библиотеки. Это относится к вашим основным проектам .proj-file. (Например ../some folder / libproject /)
  15. Надеюсь, ваш основной проект будет построен без ошибок, и проект библиотеки будет построен в одно и то же время, используя ту же конфигурацию, что и основной проект.

Я понятия не имею, подходит ли это хороший подход или есть ли более простой способ сделать это. Однако мне это нравится, поскольку я могу использовать проект библиотеки в нескольких проектах. И если я хочу обновить проект библиотеки, мне нужно сделать это только в одном месте, и другие проекты также будут обновлены, так как все они ссылаются на один и тот же проект.

Edit1: У меня были некоторые проблемы с библиотечными проектами, использующими объективные категории c. При попытке вызвать эти методы я получил непризнанный селектор, посланный к ошибкам экземпляра во время выполнения. Эта проблема была решена, следуя приведенному здесь ответу.

  1. Перейдите к настройке настроек цели в основном проекте и добавьте -ObjC в запись под названием Другие флаги компоновщика

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

  • Каковы наилучшие подходы к локализации изображений с текстом для iPhone?
  • NSExpression и основные данные
  • Перенос основной базы данных при выпуске
  • Ссылка на статическую библиотеку xcode 4 для нескольких проектов внутри той же рабочей области для приложения iOS
  • Приложение не начнет использовать testflight на iOS6
  • Компиляция Xcode 4.2 для устройства iOS 3.1.3
  • Можно ли использовать Xcode4 с двумя отдельными учетными записями Apple Developer, которые не связаны?
  • команда компоновщика не выполнена с кодом выхода 1, ошибки в структуре и библиотеке
  • Отключите popover, когда я нажимаю строку в виде таблицы
  • Как изменить размер шрифта в iphone?
  • Эффект кисти приложения OpenGL ES для iPhone
  • Interesting Posts

    Могу ли я найти ограничение скорости дороги с помощью mapkit?

    Почему UIWebView не прокручивается?

    prepareForSegue не будет работать с пользовательским segue (быстрым)

    Наложение на камеру на iOS AVCaptureSession

    parse.com 1.6 crash analytics не работает

    Проблемы с компоновкой SpriteKit

    Потоковое PDF SDK для iOS через HTTP

    Как изменить язык приложения во время выполнения для строк раскадровки?

    Изменить цвет фона заголовка (только) в UIAlertController

    iOS scrollsToTop решение, когда существует несколько scrollviews, но только один установлен scrollsToTop

    Звук не воспроизводится на устройстве, если для AVAudioSession MixWithOthers установлено значение yes

    iOS Modal Segue снижает источник ViewController?

    Как прослушивать все события касания на устройстве iOS для джейлбрейка, даже приложение работает в фоновом режиме

    Получение ошибки 100021 OSStatus при попытке ad hoc распространять приложение ios

    Вход в Parse.com и Facebook, работает бесконечный цикл

    Давайте будем гением компьютера.