Разработка под Apple. Шаг первый
С сегодняшнего дня мы открываем новую рубрику, которую от нас долго ждали и которая наверняка будет очень полезной для многих наших читателей. В ней мы будем апеллировать к огромной доле нашей аудитории, которая заслуживает настолько большого внимания, что мы не можем ее игнорировать. Речь идет о разработчиках программного обеспечения для устройств Apple. Отныне каждую неделю мы будем публиковать полезные материалы, призванные помочь начинающим разработчикам под такие платформы как iOS и Mac OS X разобраться в этом сложном, но интересном процессе.
Мы обещаем делать так, чтобы наши материалы в помощь разработчикам читались максимально легко и интересно. И в первой вводной статье мы рассмотрим инструменты, необходимые для создания приложений, а также создадим наше первое приложение для 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
Итак, всё готово, чтобы написать наше первое приложение и одновременно разобраться в новом интерфейсе программы.
Запустим Xcode 4, после запуска появится окно приветствия:
В левой части мы видим команды «Создать новый проект», «Создать проект из репозитория» и ссылки на справочную информацию. В правой части окна расположен список существующих проектов.
Нажмем “Create a new Xcode project” и выберем View-based Application
Выбираем название проекта. Принято, что приложения с графическим интерфейсом именуются с заглавной буквы, а если приложение предназначено для запуска из командной строки, — с прописной.
Далее выбираем куда сохранить проект. Рекомендуем создать отдельную папку для хранения всех проектов, например, создать папку Developer в домашней директории:
После того, как мы нажали Create, перед нами появляется главное окно программы:
В левой части расположен список файлов, входящих в проект, над ним небольшие иконки, открывающие другие вкладки: поиск, логи, отладка. С ними мы познакомимся позднее.
Xcode поддерживает одновременное использование вкладок, которые очень похожи на вкладки в браузерах, при этом каждую вкладку можно организовать как отдельное рабочее пространство, разделив экран на несколько частей:
Одним из ключевых отличий Xcode 4 от предшественника является интегрированный Interface Builder, который раньше был отдельной программой. Interface Builder, как понятно из названия, предоставляет графический интерфейс для построения интерфейсов приложений перетягиванием элементов из библиотеки и настройки свойст в Инспекторе (аналогичном инспектору в стандартных приложениях Mac OS X).
Итак, рассмотрим файлы в нашем проекте.
В папке FirstLaunch находятся файлы, с которыми мы чаще всего будем работать:
1) Пары файлов с расширениями .h и .m — это интерфейсы и реализации наших классов соответственно.
2) Файлы с расширением .xib (или .nib) хранят наш графический интерфейс.
3) В файлах .plist хранятся настройки нашего приложения.
В нашем первом приложении мы используем два элемента — слайдер (UISlider) и текстовое поле (UILabel). Приложения для iOS создаются с использованием паттерна MVC (Model-View-Controller), с которым мы познакомимся в следующих статьях. Хорошей практикой является написание в первую очередь API (программного интерфейса приложения), и далее назначение элементов интерфейса для взаимодействия с ним.
Но в сегодняшнем примере мы пойдем по другому пути. Наше приложение будет выводить на экран значение текущей позиции слайдера и обновлять его при каждом перемещении слайдера.
Откроем файл FirstLaunchViewController.xib, в появившемся Interface Builder перетащим элементы UILabel и UISlider в окно нашего приложения.
Можно менять размер элементов, а также настраивать вид их отображения, используя свойства в правой части окна.
Приступим к реализации нашего приложения. Для этого откроем файл FirstLaunchViewController.m и нажмем кнопку Assistant, чтобы в правой части экрана появился связанный с ним файл FirstLaunchViewController.h
Как мы помним, в нашем приложении два объекта — 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:
Теперь можно запускать приложение и перемещать слайдер, наблюдая изменяющееся значение в UILabel. Значение, которое мы видим в UILabel по умолчанию изменяется от 0 до 1 и установлено по умолчанию в положении 0.5.
Однако эти значения можно настроить в Interface Builder, выделив UISlider в окне нашего приложения:
Итак, сегодня мы установили инструменты разработчика, включающие Xcode 4 и iPhone SDK, познакомились с интерфейсом Xcode 4, возможностями Interface Builder и создали наше первое приложение.
В следующих статьях мы подробнее познакомимся с языком программирования Objective-C и с основными объектами, с которыми мы будем работать при создании наших приложений.