Несмотря на то, что Xcode 4 рекламируется, имея в виду кросс-проектные классы проектов в общей рабочей области, я не нашел эту работу и сделал некоторые исследования по этой проблеме. Общее решение, обсуждаемое во многих потоках здесь, заключается в создании статической библиотеки и связывании ваших проектов с ней.
Поэтому я следил за руководством Ионы (http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/) и создал статическую библиотеку для совместного использования часто используемых подклассов UIView с несколькими проектами.
С некоторыми пробными и опытными ошибками и устранением неполадок я нашел это решение действительно удовлетворительным и чистым, но все еще есть некоторые сложности:
(1) Статическая библиотека не может передавать файлы XIB
После исследования, которое я сделал, кажется невозможным получить доступ к XIB файлам вне проекта статической библиотеки, не включая их, перетащив их в каждый проект, необходимый для создания ссылок. Учитывая подкласс UIViewController в статической библиотеке, которая должна быть загружена из XIB, хотя подкласс UIViewController доступен из любого проекта, который ссылается на статическую библиотеку, вы не можете вызвать "initWithNibName" без добавления файла XIB в этот проект.
Я временно решил эту проблему, просто создав ссылки на XIB файлы статической библиотеки в каждом проекте, в котором они мне нужны, - есть ли лучшее решение?
(2) Интерфейс Builder не знает классов в статической библиотеке
Хотя я могу выбрать один из подклассов UIView в своей статической библиотеке как класс объекта, который я перетащил в XIB в моем проекте (даже с автозавершением), во время выполнения я получаю сообщение об ошибке "Неизвестный класс [UIViewSubclassName] в файле Interface Builder".
Решение, которое я нашел здесь - Интерфейс Builder не может видеть классы в статической библиотеке - (перетаскивание файла заголовка в XIB-браузер для создания интерфейса Builder класс), по-видимому, перестали работать с новым Xcode 4 - XIB-браузер объединен в однооконный интерфейс и не отвечает на перетаскиваемые файлы заголовков.
Как я могу сделать объекты XIB включенными из статической библиотеки (например, подкласс UIViewController в моем проекте, который должен содержать некоторые кнопки, которые я часто использую и, следовательно, включены в мою статическую библиотеку), не исключая исключения во время выполнения?
Большое спасибо!
PS: Некоторые из этих ошибок возникают с кодом, который компилируется для симулятора без проблем, но бросает ошибки при создании для устройства...