Разработка под 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 и не менять стандартное место установки. Можно использовать mac безопасный режим для исключения проблем с совместимостью.
После установки запустить приложение можно из папки 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 {</p> <p>//объекты и переменные</p> <p>}
между фигурными скобками {…} добавим наши объекты UILabel и UISlider:
@interface FirstLaunchViewController : UIViewController {</p> <p>IBOutlet UILabel *labelValue;</p> <p>IBOutlet UISlider *sliderValue;</p> <p>}
после закрывающейся скобки «}» и перед @end располагаются методы. Подробнее о методах будет расскзано в следующих статьях. Сейчас можно представить, что это аналог функции в языке Си, адресованный объекту.
В нашем примере будет всего один метод — (IBAction)valueChanged;
Перейдем к реализации нашего класса. Существующий код в файле FirstLaunchViewController.m можно удалить, оставив
#import "FirstLaunchViewController.h"</p> <p>@implementation FirstLaunchViewController</p> <p>@end
Между @implementation и @end располагается реализация нашего класса. Директива #import сообщает, что мы можем использовать описания из головного (header) файла нашего класса.
В нашей реализации всего один метод:
@implementation FirstLaunchViewController</p> <p>- (IBAction)valueChanged {</p> <p>}</p> <p>@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 и с основными объектами, с которыми мы будем работать при создании наших приложений.
Разное Дизайнер (designer)