Разработка под Apple. Шаг первый

С сегодняшнего дня мы открываем новую рубрику, которую от нас долго ждали и которая наверняка будет очень полезной для многих наших читателей. В ней мы будем апеллировать к огромной доле нашей аудитории, которая заслуживает настолько большого внимания, что мы не можем ее игнорировать. Речь идет о разработчиках программного обеспечения для устройств Apple. Отныне каждую неделю мы будем публиковать полезные материалы, призванные помочь начинающим разработчикам под такие платформы как iOS и Mac OS X разобраться в этом сложном, но интересном процессе.

Разработка под Apple. Шаг первый. Фото.
Мы обещаем делать так, чтобы наши материалы в помощь разработчикам читались максимально легко и интересно. И в первой вводной статье мы рассмотрим инструменты, необходимые для создания приложений, а также создадим наше первое приложение для iPhone.

В 2010 году на конференции разработчиков WWDC компания Apple представила новую версию Xcode 4. Во всех материалах данного курса будет использоваться именно эта версия среды разработки, однако в случае невозможности использования Xcode 4, все примеры можно будет выполнить и в предыдущей версии — Xcode 3.

Для установки и первого запуска нам потребуются:

1)  Относительно первоначальных знаний не ожидается, что вы умеете программировать. В курсе будет рассмотрен язык программирования Objective-C, который является надстройкой над C. Чтобы курс не превратился в изучение С, будет дана обзорная статья и ссылки на материалы для самостоятельного изучения.

2)  Любой Mac с процессором Intel и установленной Mac OS X 10.6 Snow Leopard.

Если вы устанавливаете Xcode 4, существуют два варианта:

•  скачать его с сайта developer.apple.com, при этом имея сертификат разработчика, который стоит $99 в год;

•  либо купить Xcode 4 в Mac App Store за $4.99.

Xcode 3 можно скачать бесплатно с сайта developer.apple.com.

Установка достаточно проста, нужно следовать инструкциям установщика, убедиться, что отмечен пункт iPhone SDK и не менять стандартное место установки.

После установки запустить приложение можно из папки Macintosh HD —> Developer —> Applications

Разработка под Apple. Шаг первый. Фото.

Итак, всё готово, чтобы написать наше первое приложение и одновременно разобраться в новом интерфейсе программы.

Запустим Xcode 4, после запуска появится окно приветствия:

Разработка под Apple. Шаг первый. Фото.

В левой части мы видим команды «Создать новый проект», «Создать проект из репозитория» и ссылки на справочную информацию. В правой части окна расположен список существующих проектов.

Разработка под Apple. Шаг первый. Фото.

Нажмем “Create a new Xcode project” и выберем View-based Application

Выбираем название проекта. Принято, что приложения с графическим интерфейсом именуются с заглавной буквы, а если приложение предназначено для запуска из командной строки, — с прописной.

Разработка под Apple. Шаг первый. Фото.

Далее выбираем куда сохранить проект. Рекомендуем создать отдельную папку для хранения всех проектов, например, создать папку Developer в домашней директории:

Разработка под Apple. Шаг первый. Фото.

После того, как мы нажали Create, перед нами появляется главное окно программы:

Разработка под Apple. Шаг первый. Фото.

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

Разработка под Apple. Шаг первый. Фото.

Xcode поддерживает одновременное использование вкладок, которые очень похожи на вкладки в браузерах, при этом каждую вкладку можно организовать как отдельное рабочее пространство, разделив экран на несколько частей:

Разработка под Apple. Шаг первый. Фото.

Одним из ключевых отличий Xcode 4 от предшественника является интегрированный Interface Builder, который раньше был отдельной программой. Interface Builder, как понятно из названия, предоставляет графический интерфейс для построения интерфейсов приложений перетягиванием элементов из библиотеки и настройки свойст в Инспекторе (аналогичном инспектору в стандартных приложениях Mac OS X).

Разработка под Apple. Шаг первый. Фото.

Итак, рассмотрим файлы в нашем проекте.

В папке FirstLaunch находятся файлы, с которыми мы чаще всего будем работать:

1)  Пары файлов с расширениями .h и .m — это интерфейсы и реализации наших классов соответственно.

2)  Файлы с расширением .xib (или .nib) хранят наш графический интерфейс.

3)  В файлах .plist хранятся настройки нашего приложения.

В нашем первом приложении мы используем два элемента — слайдер (UISlider) и текстовое поле (UILabel). Приложения для iOS создаются с использованием паттерна MVC (Model-View-Controller), с которым мы познакомимся в следующих статьях. Хорошей практикой является написание в первую очередь API (программного интерфейса приложения), и далее назначение элементов интерфейса для взаимодействия с ним.

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

Откроем файл FirstLaunchViewController.xib, в появившемся Interface Builder перетащим элементы UILabel и UISlider в окно нашего приложения.

Разработка под Apple. Шаг первый. Фото.

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

Приступим к реализации нашего приложения. Для этого откроем файл FirstLaunchViewController.m и нажмем кнопку Assistant, чтобы в правой части экрана появился связанный с ним файл FirstLaunchViewController.h

Разработка под Apple. Шаг первый. Фото.

Как мы помним, в нашем приложении два объекта — UILabel, отображающий строки, и UISlider имеющий свойство value (значение), передающее десятичное значение float (с плавающей точкой) позиции слайдера.

В файле .h мы объявляем переменные, методы, объекты, а в файле .m описываем их реализацию.

Начем с FirstLaunchViewController.h. В поле

@interface FirstLaunchViewController : UIViewController {

//объекты и переменные

}

между фигурными скобками {…} добавим наши объекты UILabel и UISlider:

@interface FirstLaunchViewController : UIViewController {

IBOutlet UILabel *labelValue;

IBOutlet UISlider *sliderValue;

}

после закрывающейся скобки «}» и перед @end располагаются методы. Подробнее о методах будет расскзано в следующих статьях. Сейчас можно представить, что это аналог функции в языке Си, адресованный объекту.

В нашем примере будет всего один метод — (IBAction)valueChanged;

Перейдем к реализации нашего класса. Существующий код в файле FirstLaunchViewController.m можно удалить, оставив

#import "FirstLaunchViewController.h"

@implementation FirstLaunchViewController

@end

Между @implementation и @end располагается реализация нашего класса. Директива #import сообщает, что мы можем использовать описания из головного (header) файла нашего класса.

В нашей реализации всего один метод:

@implementation FirstLaunchViewController

- (IBAction)valueChanged {

}

@end

Нам нужно получить значение UISlider, для чего используем дополнительную переменную:

float sliderValue;

Далее присваиваем этой переменной значение текущей позиции слайдера:

sliderValue = [slider value];

Скобки [получатель сообщение] типичный синтаксис Objective-C, когда объекту (получателю) отправляется метод (сообщение) и в итоге возвращается соответствующее значение.

Теперь у нас есть переменная, хранящая значение UISlider в формате float, однако UILabel может отображать только строковые данные (формат NSString). Необходимо отобразить float sliderValue как строку. Для этого используем метод для работы со строками  -stringWithFormat, возвращающий объект строку NSString.

NSString *labelValue = [NSString stringWithFormat:@"%f", sliderValue];

Выше мы создаем объект labelValue, используя метод с аргументом stringWithFormat:аргумент. Аргументом выступает sliderValue.

Далее выводим строку в UILabel:

[label setText:labelValue];

Если мы запустим приложение, и изменим положение слайдера ничего не произойдет. Дело в том, что мы не связали элементы интерфейса в Interface Builder с нашими объектами в реализации.

Interface Builder предоставляет графический интерфейс для решения нашей задачи. Откроем файл FirstLaunchViewController.xib и, нажав Ctrl перетянем File’s Owner на UILabel в окне нашего приложения и выберем label, повторим тоже самое с UISlider. Следует отметить, когда мы связываем Outlets направление перетягивания от File’s Owner к элементу интерфейса, а когда связываем метод (Action) — наоборот. Поэтому перетянем теперь также с нажатой Ctrl от UISlider к File’s Owner и выберем valueChanged:

Разработка под Apple. Шаг первый. Фото.

Теперь можно запускать приложение и перемещать слайдер, наблюдая изменяющееся значение в UILabel. Значение, которое мы видим в UILabel по умолчанию изменяется от 0 до 1 и установлено по умолчанию в положении 0.5.

Однако эти значения можно настроить в Interface Builder, выделив UISlider в окне нашего приложения:

Разработка под Apple. Шаг первый. Фото.

Итак, сегодня мы установили инструменты разработчика, включающие Xcode 4 и iPhone SDK, познакомились с интерфейсом Xcode 4, возможностями Interface Builder и создали наше первое приложение.

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