Первый элемент в навигаторе проекта (<Command+l>) представляет собой сам проект. (В проекте Empty Window, созданном в этой главе ранее, этот пункт назывался Empty Window.)

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

Для обзора этих элементов откройте папку проекта в окне Finder и окно проекта в среде Xcode. Выберите листинг проекта в навигаторе проекта и команду File^Show в окне Finder (рис. 6.7).

Окно Finder отображает содержимое вашей папки проекта. Самым важным в этой папке является файл Empty Window.xcodeproj. Это файл проекта, соответствующий проекту, указанному в навигаторе проекта. Все, что среда Xcode знает о вашем проекте, — из каких файлов он состоит и как собран проект, — хранится в этом файле. Для того чтобы открыть проект в окне Finder, дважды щелкните на файле проекта. В качестве альтернативы можно перетащить папку проекта на пиктограмму среды Xcode (в окне Finder, на панели Dock или на переключателе приложений), и среда Xcode найдет ваш файл проекта и откроет его; таким образом, вам вообще не придется открывать папку проекта!

 

Никогда, никогда, никогда ничего не трогайте в папке проекта, если вы открыли ее в окне Finder. Можете только дважды щелкнуть на файле проекта, чтобы открыть его. Ничего не записывайте в эту папку непосредственно. Ничего не удаляйте из этой папки непосредственно. Ничего не переименовывайте в папке проекта. Ни к чему не прикасайтесь в папке проекта! Все ваше взаимодействие

с проектом должно происходить с помощью окна проекта в среде Xcode. (Когда вы станете опытным пользователем среды Xcode, то узнаете, в каких ситуациях можно нарушать это правило. А пока слепо выполняйте его!)

Дело в том, что изменения в папке проекта должны происходить определенным образом. Если вы вносите изменения в проект непосредственно в окне Finder, так сказать, за спиной проекта, то этот порядок нарушается и проект разрушается. Когда вы работаете в окне проекта, среда Xcode сама внесет необходимые изменения в папку проекта, и все будет в порядке.

Навигатор проекта и папка проекта

Рис. 6.7. Навигатор проекта и папка проекта

Посмотрим, как группы и файлы, образующие иерархию, удаляются из проекта в навигаторе проекта и как это отражается на папке проекта в окне Finder (рис. 6.7). (Напомним, что группа — это технический термин, обозначающий объекты, похожие на папки и отображающиеся в навигаторе проекта.) Группы в навигаторе проекта не обязательно соответствуют папкам на диске в окне Finder, а папки на диске в окне Finder не обязательно соответствуют группам в навигаторе проекта.

• фуппа Empty Window прямо соответствует папке Empty Window на диске. Файлы в группе Empty Window, такие как AppDelegate.m, соответствуют реальным файлам на диске в папке Empty Window. Если вы создали дополнительные исходные файлы (которые в реальной жизни вы практически обязательно создадите в ходе разработки своего проекта), то скорее всего включите их в группу Empty Window в навигаторе проекта, и они окажутся в папке Empty Window на диске. (Однако это не является обязательным требованием; ваши файлы могут находиться где угодно, и ваш проект при этом будет прекрасно работать.)

Аналогично группа Empty Window Tests соответствует папке Empty Window Tests на диске, а файл Empty_WindowTests .m в группе Empty Window Tests находится в папке Empty Window Tests.

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

• С другой стороны, группе Supporting Files внутри группы Empty Window на диске ничего не соответствует; она просто представляет собой объединение нескольких элементов в навигаторе проекта, чтобы их можно было легко найти и показать или скрыть как одно целое. Впрочем, элементы в этой группе вполне реальны; вы можете сами убедиться, что на диске существуют четыре файла Empty Window-Info .plist, InfoPlist. strings, main .m и Empty Window-Pref ix .pch — у них просто нет контейнера, который назывался бы Supporting Files. (В группе Empty WindowTests есть совершенно аналогичная группа Supporting Files.)

• Два файла в группе Empty Window, InfoPlist. strings и Main, storyboard, появляются в окне Finder в папках, которым в навигаторе проекта не соответствует ни один видимый элемент: файл Main. storyboard на диске находится в папке Base. lproj, а файл InfoPlist. strings на диске — в папке en. lproj. Эти папки относятся к механизму локализации, который мы обсудим в главе 9.

• Элементу Images.xcassets в навигаторе проекта на диске соответствует папка Images . xcassets, имеющая специальную структуру. Это каталог ресурсов (новшество в среде Xcode 5); в каталог ресурсов в среде Xcode можно добавлять изображения, которые будут записаны в соответствующую папку на диске. Это облегчает работу со множеством связанных друг с другом изображений, например пиктограмм разного размера, не просматривая их список непосредственно в навигаторе проекта. О каталоге ресурсов мы поговорим немного позже и в главе 9.

Возможно, все это покажется вам слишком запутанным. Совсем нет! Помните, что я говорил вам не вмешиваться в содержание вашей папки проекта на диске в окне Finder. Сосредоточьте свое внимание на навигаторе проекта, вносите свои модификации только здесь, и все будет хорошо.

Не стесняйтесь создавать новые группы в ходе разработки проекта и добавлять в них файлы. Цель групп — помочь навигатору проекта хорошо выполнять ваши требования. Они не влияют на сборку приложения и по умолчанию не соответствуют ни одной папке на диске; это просто удобный способ организации файлов в навигаторе проекта. Для создания новой группы выберите команду File^NewOGroup. Для того чтобы переименовать группу, выберите ее в навигаторе проекта и нажмите клавишу <Return>, чтобы отредактировать ее имя. Например, если какие-то ваши файлы связаны с экраном приветствия вашего приложения, вы можете собрать их в группу Login. Если ваше приложение содержит звуковые файлы, вы можете собрать их в группу Sounds. И так далее.

Элементы групп Frameworks и Products не имеют аналогов в папке проекта, но им соответствуют реальные сущности, необходимые для сборки и запуска проекта.

Группа Frameworks

В этой группе по принятому соглашению перечисляются каркасы (код Cocoa), от которых зависит ваш код. Каркасы существуют на диске, но они не встраиваются в ваше приложение во время его сборки; это не нужно, потому что каркасы находятся также на целевом устройстве (iPhone, iPod touch или iPad). Вместо этого каркасы связываются с приложением, т.е. приложение знает о них и ожидает найти их на целевом устройстве во время выполнения. Таким образом, весь код каркасов в приложении отсутствует, экономя значительный объем памяти.

(Начиная с версии Xcode 5 новые модульные возможности позволяют каркасам связываться с вашим кодом без перечисления в группе Frameworks. О модулях мы поговорим в конце этой главы.)

Группа Products

Эта группа по умолчанию автоматически содержит ссылку на выполняемый комплект, сгенерированный при сборке цели.


 

 

 

Добавить комментарий