Как поделиться / распространить скомпилированный код Objective-C (например, JAR в Java)? - PullRequest
7 голосов
/ 13 июля 2009

Я хотел бы написать код Objective-C для распространения. Каков наилучший способ упаковать вывод. В Java вы можете упаковать свой код в файл JAR и распространять его. Что будет эквивалентно в Objective-C?

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

Objective-C эквивалент Java-пакетов?

Ответы [ 5 ]

7 голосов
/ 13 июля 2009

Фреймворк - это почти наверняка путь. Одна из действительно приятных особенностей Frameworks в OS X состоит в том, что они могут объединять исполняемый код, заголовки, метаданные, изображения, значки и т. Д. В один пакет. Кроме того, фреймворки могут быть включены в */Library/Frameworks/ или даже в комплект вашего приложения, чтобы полностью отделить зависимость любого другого приложения от данной версии фреймворка.

Руководство по программированию от Apple - лучшее место для начала работы с фреймворками.

Создать каркас просто. По сути, в Xcode вы выбираете Файл> Новый проект ... и выбираете Framework, затем Cocoa Framework. Это создаст новый проект с целевым фреймворком и автоматически упакует все для вас при сборке.

Не забывайте, что документация и модульные тесты - это Good Thing ™, особенно для фреймворков, которые по своей природе чаще используются несколькими клиентами, чем большинство кода конечного пользователя. Вы можете добавить больше целей в свой фреймворковый проект Xcode, чтобы документировать и тестировать его.

Поскольку вы ищете примеры, посмотрите CHDataStructures.framework (проект, который я разрабатываю) и PSMTabBarControl.framework (который включает в себя множество дополнительных ресурсов в рамках) , Оба с открытым исходным кодом, и должны предоставить адекватные примеры для собственного проката.

Один совет, чтобы избавить вас от головной боли: файлы заголовков не будут скопированы во встроенную среду, если вы не нажмете на цель платформы и не измените Role на «Public» (или « Частный ").

5 голосов
/ 13 июля 2009

Вы хотите создать Framework. В Xcode есть отправная точка для нового проекта по созданию одного из них. Есть несколько предостережений и ошибок, но в целом процесс прост.

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

Reedit: введение см. http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/

1 голос
/ 13 июля 2009

Вы не сказали, было ли это для iPhone или нет. На iPhone это должна быть .sa (статически связанная библиотека) - но я думаю, что нормальное распространение будет .dylib или .so

0 голосов
/ 16 июля 2009

Вы можете скомпилировать его как Framework или как статическую библиотеку (. Так я верю).

0 голосов
/ 13 июля 2009

Java-программы работают в контексте виртуальной машины. Jar содержит абстрактные байт-коды, которые должны быть преобразованы виртуальной машиной в машинный код.

Objective-C, как и C, компилируется в собственный машинный код, такой как файл Win .exe, непосредственно запускаемый операционной системой.

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

...