Я совершенно новичок в Xcode и Objective-C. Я хочу задать очень простой вопрос.
Я видел, что при «связывании двоичного файла с библиотеками» в настройках проекта есть различия в фреймворке и библиотеках, импортированных из других проектов в рабочей области.
Первый вопрос, почему есть рамки? И почему там библиотека? Моя библиотека не может быть фреймворком?
И затем, из файла .h , как я могу вызвать классы из моей импортированной статической библиотеки?
Я предполагаю, что должен быть префикс, но я не смог его найти. Ни «ProjName / Myclass.h» не работают.
Пожалуйста, будьте как можно точнее.
Спасибо
objective-c
xcode4
static-libraries
Leonardo
источник
источник
Ответы:
Самым большим преимуществом фреймворка перед статическими библиотеками является то, что они действуют как аккуратный способ упаковки скомпилированного двоичного файла библиотеки и любых связанных заголовков. Они могут быть добавлены в ваш проект (так же, как встроенные фреймворки SDK, такие как Foundation и UIKit), и они должны просто работать (большую часть времени).
Большинство фреймворков содержат динамические библиотеки; рамки, созданные в Xcode с использованием шаблона Mac Framework, создадут динамическую библиотеку. IPhone не поддерживает динамические фреймворки, поэтому многоразовые библиотеки кода iOS стали распространяться в виде статических библиотек.
Статические библиотеки хороши, но они требуют немного дополнительной работы со стороны пользователя. Вы должны связать свой проект с библиотекой, и вам нужно скопировать файлы заголовков в ваш проект или сослаться на них где-нибудь, указав соответствующие пути поиска заголовков в настройках сборки.
Итак, в общем, я считаю, что лучший способ распространения вашей библиотеки - это фреймворк. Чтобы создать «статический» фреймворк для iOS, вы можете по существу взять обычный фреймворк и заменить двоичный файл скомпилированной статической библиотекой. Вот как я распространяю одну из моих библиотек, Resty и именно так я намерен распространять свои библиотеки в будущем.
Вы можете посмотреть Rakefile, поставляемый в этом проекте (если вы не знаете, Rake - это Ruby-эквивалент Make). У меня есть несколько задач для компиляции моего проекта (использования
xcodebuild
) и упаковки их в качестве статической среды для iOS. Вы найдете это полезным.Кроме того, вы можете использовать эти шаблоны Xcode 4 для создания платформы iOS.
Обновление 9 декабря 2013 года : это популярный ответ, поэтому я решил отредактировать его, сказав, что мой первый выбор для распространения библиотеки изменился. Мой первый выбор для любой сторонней библиотеки в качестве потребителя или производителя - CocoaPods. Я распространяю свои библиотеки с помощью CocoaPods и предлагаю предварительно скомпилированную статическую библиотеку с заголовками в качестве запасного варианта.
источник
В основном, фреймворки являются библиотеками и предоставляют удобный механизм для работы с ними. Если вы посмотрите «внутрь» фреймворка, это просто каталог, содержащий статическую библиотеку и файлы заголовков (в некоторой структуре папок с метаданными).
Если вы хотите создать свой собственный фреймворк, вы должны создать «статическую библиотеку» и упаковать ее особым образом. увидеть этот вопрос
В общем, framworks на платформах используется для многоразового поведения, когда вы добавляете свой собственный код «в существующую среду». если вы хотите иметь определенную функциональность, вы можете использовать библиотеку (например, three20) и упаковать ее в свой дистрибутив приложения
источник