1 Core Data для Mac и iOS. Введение в Xcode

Xcode 4 берет свои корни из Project Builder и Interface Builder, двух инструментов созданных для NeXTSTEP - ОС работавшей на компьютерах NeXT одноименной компании основанной Стивом Джобсом когда он покинул Apple в 1985. Из-за неудачного выбора железа NeXTSTEP преобразовался в OPENSTEP, который работал на Solaris - ОС от Sun, и позже на Windows. Apple купила NeXT в 1996, появилось ПО Rhapsody и позже Mac OS X. Одна из ветвей стала ОС для iPhone, а после выхода iPad стала iOS.

Project Builder был переименован в Xcode в 2003 году.
В 2010 на конференции от Apple - Worldwide Developer Conference дебютировал Xcode 4. Официальный релиз был весной 2011 года. Project Builder и Interface Builder были объеденены в один инструмент.

В императивном или процедурном программировании используется линейная парадигма - делай это / делай так.

В декларативном программировании механизм того как нечто должно делаться является менее значимым чем что должно сделаться. Т.е. описывается как должен выглядеть результат. CSS, регулярные выражения, SQL, HTML - являются декларативными языками.

В ООП объекты инкапсулируют данные и функциональность. Объекты взаимодействуют друг с другом чтобы выполнить программу.


Xcode поставляется с различным инструментами для разработки

Workspace

Навигаторы

Чтобы скрыть панель навигаторов нужно воспользоваться меню View >
Navigators > Hide Navigator или горячими клавишами ⌘ + 0 (Alt + 0 на Хакинтоше).

Навигатор проектов ⌘ + 1 (Alt + 1)

Когда вы кликаете по иконке проекта вверху навигатора, то в области редактора показывается информация о проекте.

nib файл (.xib) - файл интерфейса. iOS проекты могут использовать storyboards вместо nib файлов. Раньше nib файлы были стандартом.

Если нажать ⌃ + ЛКМ (Ctrl + ЛКМ) на файле то появится контекстное меню, такое же, если нажать ПКМ на файле.

Если файл выделен красным, значит он отсутствует.

Фильтр внигу навигатора позволяет фильтровать файлы по имени. Значок + позволяет добавлять новые файлы по шаблону. Это не тоже самое что добавление файла через пункт Add Files to <MyProjectName> контекстного меню выпадающего по нажатию ПКМ.



Справа от кнопки + доступно еще три пункта:
  • Show only recently edited files
  • Show only files with source-control status such as modified
  • Show only files with unsaved changes

Навигатор символов ⌘ + 2 (Alt + 2)

Показывает:
  • классы (C);
  • методы (M);
  • свойства (P);
  • Interface Builder actions (A);
  • outlets (O) - специальный вид свойств.
Директива synthesize, которая используется совместно с property отмечается флагом V (for variable).
Внизу панели навигатора также имеется поиск и фильтр:
  • Show only class symbols—that is, no globals
  • Show only symbols defined in the project
  • Show only containers such as classes and categories; do not show members

Навигатор поиска ⌘ + 3 (Alt + 3)

Можно переключаться с поиска на замену поменяв Find на Replace.
Если нажать на лупу то можно выбрать из истории последние варианты поисковых запросов.


Поиск внизу навигатора позволяет искать по результатам верхнего поиска.

Навигатор проблем ⌘ + 4 (Alt + 4)

Ошибки компилятора, spell-checker'a.

Навигатор отладки ⌘ + 5 (Alt + 5)

Отображает последовательность вызовов в потоках.

Навигатор точек останова ⌘ + 6 (Alt + 6)

Позволяет найти место где программа сходит с рельсов.
Чтобы удалить точку останова можно просто вытянуть ее из навигатора точек останова и она испарится.

Навигатор журнала ⌘ + 7 (Alt + 7)

Последние события в списке находятся первыми, т.е. обратный хронологический порядок.

Редакторы

В Xcode доступно три вида редакторов:

  • standard - отображает один файл;
  • assistant - отображает два и более файлов;
  • version - сравнение файла с его предыдущими версиями.

Три кнопки переключающие область редактора в соответствующий им вид находятся в правом верхнем углу Xcode.

В меню View -> Assistant Editor можно выбрать компоновку редакторов на экране.

При нажатии ⌥ + клик на коде, появляется соответствующая помощь.

Стиль текстового редактора настраивается в меню Xcode -> Preferences... -> Fonts & Colors. Особо стоит стиль Presentation, который используются для демонстрации кода на конференциях или code review.

Jump bar

Вне зависимости от вида каждый редактор имеет свой jump bar, который позволяет быстро переходить к файлу, методу, свойству, или классу в файле. В jump bar отображается логическая структура проекта.

Jump bar

Организовать список jump bar-a можно с помощью директивы: #pragma mark – headingName
Есть 3 вариации этой директивы:

  1. жирный заголовок с разделяющей линией над ним (как на рисунке выше);
  2. если пропустить дефис, то линия не показывается, показывается только имя;
  3. если опустить имя и оставить только дефис, то будет показываться только линия без имени.
Первый вариант можно использовать для разделения кода на главные секции, и потом использовать третий вариант для того чтобы разбить каждую главную секцию.

Слева от jump bar-a находится меню Related items.

Related items menu


  • Counterparts — .h файлы для .m файлов, и наоборот.
  • Superclasses — superclass (исключение для NSObject), список так организован, что последний в списке всегда NSObject.
  • Subclasses — если есть.
  • Siblings — классы которые имеют такой же superclass.
  • Categories — это констукция Objective-C, которая позволяет добавлять методы к уже имеющимся классам.
  • Protocols — эта возможность Objective-C позволяет объявлять наборы методов, которые должны быть реализованы классами, протоколы предоставляют функциональность похожую на множественное наследование в других ООП-языках.
  • Includes — подключенные файлы.
  • Included By — другие файлы которые подключают данный файл.

Утилиты

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

Инспекторы

При выделении файла с кодом в инспекторе можно увидеть полный путь к файлу, а также относительное местоположение.

  • Absolute Path - подходит если файл находится на shared сервере;
  • Relative to Group - подходит для командной разработки, каждый разработчик команды может изменять структуру групп не беспокоясь о том как они будут упорядочиваться вместе;
  • Relative to Project - если проект перемещается на другой компьютер, то все файлы перемещаются тоже и внутренняя структура проекта не меняется;
  • Relative to Build Products;
  • Relative to Developer Directory;
  • Relative to SDK.

Библиотеки

Коллекция элементов, которые можно добавить в редактор.
Виды:
  • File templates—[ctrl][option][command]1
  • Code snippets—[ctrl][option][command]2
  • Objects—[ctrl][option][command]3
  • Media—[ctrl][option][command]4

Если в проекте используются стандарты для оформления кода, то их можно поместить в Code snippets. Для этого надо всего лишь перетащить код в библиотеку. Snippets сохраняются в окружении, а не в конкретном проекте.

Organizer Window

Меню: Window -> Organizer
Состав:
  • Devices;
  • Repositories - Git и Subversion;
  • Projects - можно управлять snapshots проекта, чтобы создать File -> Create Snapshot, чтобы настроить File -> Project Settings -> Snapshots;
  • Archives - можно создать инсталляционный архив для развертывания;
  • Documentation.