Поваренная книга программиста iPhone (разработка приложений для iPhone) |
- Statistics
- Participants
- Translate into Russian
- Translation result
- 80% translated in draft. Almost done, let's finish it!
Благодарности за Поваренную книгу программиста iPhone
"Эта книга стоит в десятки раз больше того, что Вы за нее заплатили! Если Вы занимаетесь написанием приложений для iPhone, она позволит сэкономить недели вашего времени. Эрика включила массу свежих примеров, иллюстрирующих основы разработки приложений для iPhone, а также много того, что не отображено в официальной документации Apple."
—Tim Burks, разработчик программного обеспечения для iPhone, TootSweet Software
"Уровень знаний Эрики Садун соответствует реноме издательства Addison-Wesley. "Поваренная книга программиста iPhone" - это всеобъемлющее пособие по программированию iPhone, которое поможет любому: от новичка до опытного разработчика. Многочисленные советы и подсказки книги проиллюстрированы примерами кода и снимками экрана."
— Jacqui Cheng, Associate Editor, Ars Technica
"Мы зарабатываем себе на жизнь подобными вещами, но я, признаться, восхищен Эрикой - её владением предмета и тем, как она преподносит материал: приятно неформально и в то же время на глубоком техническом уровне. Её творение станет книгой Петцольда для программистов iPhone."
— Daniel Pasco, Lead Developer and CEO, Black Pixel Luminance.
"Поваренная книга программиста iPhone : Построение приложений с iPhone SDK должна стать первым ресурсом для начинающих программистов iPhone, и лучшим вспомогательным метериалом к собственной документации Apple.*"
—Alex C. Schaefer, Lead Programmer, ApolloIM, iPhone Application Development Specialist, MeLLmo, Inc
*http://developer.apple.com/iphone/ — прим. переводчика.
"Книга Эрики - это действительно большой ресурс для Cocoa Touch разработчиков. Эта книга выходит за рамки, определённые документацией веб-сайта Apple — она включает методы, которые дадут разработчикам более глубокое понимание iPhone OS, позволяя увидеть, что происходит за кулисами этой удивительной мобильной платформы."
—John Zorko, Sr. Software Engineer, Mobile Devices
Поваренная книга
программиста
iPhone
Создание приложений с использованием iPhone SDK
Эрика Садун (Erica Sadun)
Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid Cape Town Sydney Tokyo Singapore Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 corpsales@pearsontechgroup.com For sales outside the United States please contact: International Sales international@pearsoned.com AirPort, Apple, the Apple logo, Aqua, Bonjour, Cocoa, Cover Flow, Dashcode, Finder, FireWire, iMac, iPhone, iPod, iTunes, the iTunes logo, Mac, Mac logo, Macintosh, Multi-Touch, Objective-C, QuickTime, QuickTime logo, Safari, Spotlight, and Xcode are trademarks of Apple, Inc., registered in the U.S. and other countries. Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data: Sadun, Erica. The iPhone developer’s cookbook : building mobile applications with the iPhone SDK / Erica Sadun. p. cm. ISBN-10: 0-321-55545-7 (pbk. : alk. paper) ISBN-13: 978-0-321-55545-8 (pbk. : alk. paper) 1. iPhone (Smartphone)– Programming. 2. Computer software–Development. 3. Mobile computing. I. Title. QA76.8.I64S33 2009 005.26—dc22 2008030294 Copyright © 2009 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax (617) 671 3447 ISBN-13: 978-0-321-55545-8 ISBN-10: 0-321-55545-7 Text printed in the United States on recycled paper at RR Donnelley in Crawfordsville, Indiana. First printing October 2008/
Главный редактор
Карен Геттман (Karen Gettman)
Старший редактор
приобретений
Чак Топорек (Chuck Toporek)
Старший
Редактор
Разработок
Крис Зан (Chris Zahn)
Ответственный редактор
Кристи Харт (Kristy Hart)
Редактор Проекта
Челси Марти (Chelsey Marti)
Редактор Текста
Кейт Клайн (Keith Cline)
Сбор материала
Черил Лансен (Cheryl Lenser)
Ерика Миллен (Erika Millen)
Корректор
Сан Ди Филлипс (San Dee Phillips)
Рецензенты
Тим Баркс;Даниель Паско;Алекс С. (Tim Burks, Daniel
Pasco, Alex C.)
Шэфер
Выпускающий
Редактор
Ромни Френч (Romny French)
Дизайнер Обложки
Гари Адаир (Gary Adair)
Составитель
Нони Ратчлиф (Nonie Ratcliff)
Я с любовью посвящаю эту книгу моему мужу Альберто,
который,
на протяжении многих лет, мучаясь с горами всяких штучек-дрючек и SDK, всегда оставался добрым и терпеливым...
К
концу дня.
Содержание
Предисловие XVII
Благодарности XXI
Об авторе XXII
1 Введение в iPhone SDK 1
iPhone SDK от компании Apple 1
Сборка проектов iPhone 2
Компоненты приложений iPhone 4
Иерархия приложений iPhone 4
Исполняемый файл 4
Файл Info.plist 4
Иконки и стандартные изображения 6
XIB (NIB) файлы 6
Файл не найден в пакете приложения 7
"Песочница" (изолированная программная среда) 7
Ограничения платформы 8
Ограничения хранилища 8
Ограничения доступа к данным 8
Ограничения памяти 8
Ограничения взаимодействия 9
Ограничения энергии 9
Ограничения приложения 9
Ограничения действий пользователя 10
Ограничения SDK 10
Модели программирования 11
Объектно-ориентированное программирование 11
Модель-Вид-Контроллер 11
Создание скелета приложения для iPhone 18
Приложение "Hello, World!" 19
Классы 19
Код 20
Заметки о примерах кода и управлении памятью 20
x Содержание
Создание приложения "Hello, World!" 23
Создание проекта iPhone 24
Запуск скелета приложения 24
Настройки проекта iPhone 24
Редактирование идентификационной информации 25
Использование отладчика 26
Программы разработчика приложений для iPhone 28
Телефоны разработчиков 28
Идентификаторы приложений 29
Из XCode в ваш iPhone: Организация интерфейса 30
Проекты и Список Источников 30
Список устройств 31
Суммарная таблица 31
Консольная таблица 31
Таблица ошибок 31
Таблица скриншотов 32
О привязке 32
Тестирование приложений на Вашем iPhone 32
Компиляция для распространения. 33
Использование недокументированных API вызовов 34
Ad Hoc распространение 35
Выводы 36
Виды 37
UIView и UIWindow 37
Иерархия 37
Геометрия и характерные черты 39
Жесты 42
Рецепт: Добавление пошагового видимого подвида 42
Переориентирование 44
Рецепт: Перетаскивание видов 45
UITouch 46
Добавление длительности 48
Рецепт: Обрезанные виды 51
Равновесие осязаемости и вырезки 53
Доступ значений Пиксель-Пиксель 54
XI Содержание
Рецепт: Определение Multitouch 56
UIView анимация 59
Создание анимационных блоков UIView 59
Рецепт: Уменьшение вида "В" и "ИЗ" 60
Рецепт: Смена видов 62
Рецепт: Щелкание видов 64
Рецепт: Применение CA-Переходов к слоям 66
Недокументированные типы анимаций 67
Главные вызовы анимаций ядра 68
Рецепт: Перетаскивание видов 69
Рецепт: Трансформирование видов 72
Центровка ландшафтных видов 74
Выводы 74
Обзор контроллеров 77
Обзор управления 77
Классы ядра 77
Специализированные классы 78
Создание UIViewController 79
Работа с Создателем Интерфейсов для Построения Видов для UIViewControllers 81
Пример преобразования температуры 81
Прямая загрузка XIB файлов 90
Контроллеры навигации 91
Установки контроллеров навигации 91
Толкание и всплытие вида (View) контроллеров 92
Нажатие и толкание видов контроллеров 92
Навигация пунктов класса 92
Рецепт: Создание простого двух-пунктового меню 93
Рецепт: Добавление частичного управления 95
Рецепт: Добавление UIToolbar в панель навигации 97
Рецепт: Навигация между контроллерами вида 100
Помещение назад в Корень 102
Загрузка массивов контроллера вида 102
Выступающие панели 103
Выводы 106
XII Содержание
4 Оповещение Пользователей 107
Разговор непосредственно о пользовательских оповещениях 107
Регистрация ваших результатов 108
Создание оповещений 109
Вывод предупреждения на дисплей 110
Рецепт: Создание многострочной кнопки на дисплее 110
Рецепт: Безкнопочные оповещения с автотаймером 112
Рецепт: Просьба ввода текста от Пользователя 113
Рецепт: По-настоящему простое меню 115
"Пожалуйста, подождите": Отображение процесса выполнения Пользователю 117
Рецепт: Вызов основных недокументированных методов UIProgressHUD 117
Рецепт: Использование UIActivityIndicatorView (Индикатор активности) 119
Рецепт: Создание UIProgressView 121
Рецепт: Добавление некоторого содержимого с отступом перекрытия 123
Рецепт: Создание оповещений с возможностью прокрутки 127
Рецепт: Добавление изображения в Status Bar (панель статуса) 131
Добавление значка приложения 132
Рецепт: Простые звуковые оповещения 134
Вибрация 136
Выводы 136
Простые таблицы 139
Введение в UITableView and UITableViewController 139
Создание таблиц 140
Что делает UITableViewController 141
Рецепт: Создание простой таблицы-списка 142
Фунции работы с табличными данными 142
Повторное использование ячеек 143
Пример таблицы шрифтов 143
Рецепт: Создание таблиц, основанных на списке выбора 145
Рецепт: Загрузка изображения в ячейку таблицы 149
Рецепт: Настройка свойств ячейки с текстом 151
Снимаем выделение с ячеек 152
Рецепт: Создание комплексных (смешанных) ячеек 153
Рецепт: Создание проверки выбора 155
XIII Содержание
Рецепт: Удаление ячеек 157
Создание и отображение элементов для удаления 157
Отклонить удаленное управление 158
Запросы на ручное удаление 158
Кража(перехват) ячеек 158
Добавление ячеек 159
Рецепт: Переупорядочивание ячеек 161
Рецепт: Работа с Disclosures (обнаружением) 162
Выводы 164
6 Продвинутое использование таблиц 165
Рецепт: Группировка выделений в таблице 165
Построение модульного источника данных 166
Добавление "шапки" таблицы (заголовков к секциям) 170
Рецепт: Построение таблицы с индексом 171
Рецепт: Особый фон для ячейки 172
Настройка отображения таблицы 176
Рецепт: Создание альтернативных голубых и белых ячеек 177
Рецепт: Обрамление таблицы 179
Рецепт: Добавление элементов, ассоциированных с таблицей 180
Рецепт: Построение многозадачной таблицы 182
Создание UIPickerView 183
Рецепт: Использование UIDatePicker 186
Создание Date Picker (выбор даты) 186
Рецепт: Создание полностью настроенных групповых таблиц 189
Создание сгруппированных по предпочтительности таблиц 189
Выводы 195
7 Медиа 197
Рецепт: Упорядочение папок с документами по типу файла 197
Поиск документов 198
Загрузка и просмотр изображений 200
Рецепт: Отображение уменьшеных изображений 201
Рецепт: Использование UIWebView для показа изображений 203
Отображение веб-страниц с использованием UIWebView 205
Рецепт: Отображение вашей библиотеки изображений 206
XIV Контент
Рецепт: Выбор и кастомизация изображений в списке Камеры 209
Рецепт: Снимок с использованием камеры iPhone 212
Работа с iPhone Аудио 214
Рецепт: Воспроизведение звука с Celestial 215
Рецепт: Использование Медиа-плеера для воспроизведения звуков и видео 217
Рецепт: Запись звука 219
Чтение текстовых данных 227
Отображение списка Свойств 227
Восстановление Медиа из Резервных файлов 228
Выводы 229
8 Управление 231
Рецепт: Создание простых кнопок 231
Класс UIButton 232
Создание пользовательских кнопок 233
Стеклянные(прозрачные) кнопки 236
Рецепт: Добавление анимационных элементов к кнопкам 236
Рецепт: Анимация реакции кнопки 238
Рецепт: Обычные переключения 239
Обычные UIAlertView кнопки 241
Рецепт: Добавление обычного перелистываемого слайдера 242
Добавление текста к слайдеру 246
Рецепт: Отпускание клавиатуры в UITextField 246
Рецепт: Отпускание клавиатур в UITextView 248
Рецепт: Добавление кнопки "Назад"(Undo) в UITextView 250
Рецепт: Создание текстового HTML редактора 253
Рецепт: Создание интерактивной строки поиска 255
Рецепт: Добавление Callout видов 258
Добавление индикатора состояния страницы 260
Рецепт: Обычные тулбары 263
Типы тулбаров 266
Выводы 267
9 Люди, Места, и Вещи 269
Структура Адресной Книги 269
Адресная Книга UI 269
Адресная Книга 270
xv Контент
Рецепт: Доступ к изображениям в Адресной Книги 271
Рецепт: Отображение информации из Адресной Книге 273
Рецепт: Просмотр Адресной Книги 274
Просмотр для (только) адресов электронной почты 277
Добавление контактов 277
Core Location (местонахождение ядра) 278
Как работает Core Location 278
Рецепт: Core Location в оболочке 280
Рецепт: Доступ к картам при помощи данных Core Location 286
Рецепт: Доступ к системной информации ядра 288
Рецепт: Включения/выключение сенсора акселерации 289
Рецепт: Использование акселерации для перемещения "Вверх"(Up) 290
Рецепт: Использование акселерации для перемещения отображаемых объектов 292
Выводы 295
10 Соединение с Сервисами 297
Рецепт: Добавление особых настроек 297
Объявление групп настроек приложения 297
Рецепт: Подписка приложения по особой URL схеме 302
Рецепт: Проверка статуса вашей сети 304
Тестирование статуса сети 304
Восстановление локального IP адреса 305
Запрос IP адреса сайта 306
Проверка доступности сайта 307
Рецепт: Взаимодействие с базами данных iPhone 308
Рецепт: Конвертирование XML в деревья 311
Рецепт: Сохранение и получение цепочек элементов 313
Сохранение множества цепочек значений 318
Постоянность цепочек 319
Отправка и получение файлов 320
Рецепт: Построение простого Web-ориентированного сервера,
Уведомления о сообщениях 325
Выводы 326
XVI Содержание
11 Еще одно: Программирование слоёв перекрытия (UICoverFlowLayer) 327
Классы UICoverFlowLayer 327
Проектирование видов Cover Flow 329
Проектирование контроллеров Cover Flow 331
Индекс 357
Введение
Очень мало платформ могут соперничать с уникальными технологиями разработки для iPhone. Они сочетают OS X на основе мобильных технологий с инновационными мультитачем, позиционированием на местности, встроенным акселерометром и т.д. Когда Apple представила iPhone Cocoa
Touch SDK beta в начале марта 2008 года, разработчики откликнулись настолько активно, что "обвалили" серверы Apple. С сайта Apple было осуществлено более 100 тысяч загрузок менее чем за неделю. Поваренная книга разработчика iPhone была написана, чтобы удовлетворить эту потребность в доступном источнике информации для новичков в разработке для iPhone.
Для кого эта книга
Эта книга написана для новичков в программировании для iPhone, имеющих на руках незнакомый SDK и проекты, которые надо закончить. Хотя каждый программист приходит со своим багажом знаний и целей, зачастую все сводится к решению однотипных задач: "как создать таблицу?", "как создать защищенные ключи?", "как переключаться между представлениями?" или "как использовать фреймворк Core Location?"
Книга предназначена непосредственно каждому начинающему программировать под iPhone. Понятные, полностью документированные примеры быстро помогут Вам начать продуктивно работать. Представленные готовые к работе шаблоны помогут разработчикам сфокусироваться на специфике их приложений, не погрязая в рутинных задачах.
Как организована эта книга
В этой книге представлены рецепты для наиболее общих проблем возникающих перед начинающим программистом iPhone: формирование элементов интерфейса, ответ на пользовательские действия, доступ к локальным данным и соединение с интернетом. Книга пытается представить удобные в использовании примеры. Программисты могут добавлять готовые решения в свои проекты, модифицируя их в дальнейшем для своих нужд. Каждая глава объединяет схожие задачи. Читатели могут переходить напрямую к тому решению, которое они ищут, не мучаясь выбором класса или фреймворка наиболее подходящего для решения проблемы. Далее приведен список того, что Вы найдете в главах книги:
Глава 1: Начинаем работать с iPhone SDK
Первая глава вводит читателя в iPhone SDK и представляет iPhone как платформу, описывает ограничения и особенности. Также в главе описана структура iPhone-приложений, что поможет написать первую программу в стиле Hello world.
Глава 2: Представления (Views)
Вторая глава дает понятие о представлениях, то есть объектах на экране iPhone. Вы увидите, как можно оформлять, создавать и упорядочивать представления, что позволит создать основу для ваших iPhone-приложений. Вы прочтете об иерархии, геометрии и анимации, а также о взаимодействии представлений и пользователя через касания.
Глава 3: View контроллеры
Парадигма iPhone в двух словах такова: маленький экран, большие виртуальные миры. В главе 3 вы узнаете о различных классах UIViewController которые позволят вам увеличить и упорядочить виртуальное пространство для взаимодействия с пользователями. Вы узнаете, как дать этим мощным объектам выполнять все тяжелые переходы при навигации между экранами приложений iPhone.
Глава 4: Оповещение пользователей
iPhone предлагает множество способов для оповещения пользователей, от всплывающих диалогов и прогресс баров до аудио данных и обновлений в статусной строке. Глава 4 показывает как настроить эти индикаторы в вашем приложении и расширить список ваших кастомизированных диалоговыч окон (user-alert-ов)
Глава 5: Основы таблиц
Таблицы обеспечивают тип взаимодействия который работает в частности наилучшим образом на маленьком устройстве. Многие, если не большинство, приложений поставляемых с iPhone и iPod touch основаны на таблицах, включая Настройки, YouTube, Акции и Погоду. В главе 5 показано, как iPhone работает с таблицами, какие таблицы доступны вам как разработчику, а также
как вы можете использовать функциональность таблиц в своих программах.
Глава 6: Advanced Tables (Расширенные таблицы)
Функция таблиц на iPhone не начинается и не заканчивается простой прокруткой текста. Вы можете создавать таблицы
с заголовками разделов, с множеством столбцов прокрутки, и многое другое. Вы можете добавить элементы управления, такие, как переключатели, создать ячейки с полупрозрачным бэкграундом, и включать пользовательские шрифты. Глава 6 начитается там, где заканчиваются "Основы таблиц". Она вводит дополнительные рецепты для использования программ в вашем iPhone.
Глава 7: Медиаконтент
Оправдывая ожидания, iPhone может загружать и отображать медиаконтент самых разнообразных форматов. Он играет музыку, он показывает фильмы. Он обрабатывает изображения и веб страницы. Вы можете просматривать PDF документы и фотоальбомы, и многое другое. Глава 7 показывает каким путем вы можете импортировать или загружать данные в вашу программу и отображать эти данные используя мультитач интерфейс iPhone.
Глава 8: Элементы управления
Класс UIControl служит основой для многих интерактивных элементов iPhone, в том числе кнопок, текстовых полей, слайдеров и переключателей. Глава 8 рассказывает об управлении с использованием хорошо документированных в SDK вызовов, так и менее документированных.
XIX Введение
Глава 9: Люди, Места и Объекты
В дополнение к стандартным элементам пользовательского интерфейса и мультимедийным компонентам, которые вы видели на любом компьютере, iPhone SDK обеспечивает ряд тесно сфокусированных на разработку решений, конкретно создаваемый для iPhone и iPod touch. Глава 9 представляет наиболее полезные из них, включая доступ к Адресной книге ("Люди"), Пути ядра ("Места") и Сенсорам ("Объекты").
Глава 10: Подключение к Услугам
Как устройство доступа в интернет, iPhone особенно подходит для подписки на web-услуги. Apple подарило сильную платформу обучения основным принципам во всех видах сервисов с использованием компьютерной сети и их технологий поддержки. iPhone SDK обращается с сокетами, цепочками паролей, доступом SQL, обработкой XML и многим еще. Глава 10 рассматривает общие методы для сетевого программирования и предлагает рецепты, которые упрощают ежедневные задачи.
Глава 11: Еще одна Вещь: Программирование Cover Flow
Хотя Cover Flow официально не включен в iPhone SDK, Cover Flow предлагает одну из самых замечательных и самых красивых особенностей iPhone. С Cover Flow Вы можете предложить Вашим пользователям великолепный визуальный выбор, который гораздо привлекательней стандартных зависающих списков. Глава 11 вводит в Cover Flow и показывает, как Вы можете использовать его в своих приложениях.
Что необходимо иметь, чтобы начать программировать под iPhone или iPod touch:
Копию iPhone SDK от Apple. Скачайте вашу копию SDK c http://developer.apple.com/iphone/ Вы должны будете сначала зарегистрироваться (бесплатно) как разработчик.
iPhone или iPod touch. Хотя Apple предоставляет эмулятор в составе SDK, вам на самом деле лучше иметь настоящее устройство для тестирования, если вы планируется разрабатывать серьезное приложение. Вы сможете использовать кабель идущий с вашим iPhone или iPod touch для соединения с компьютером и установки разработанной вами программы.
Лицензия разработчика для Apple iPhone. Вы не сможете тестировать ваши программы на действующем iphone до тех пор, пока не зарегистрируетесь в центре разработчиков Apple (http://developer.apple.com/iphone/program). Зарегестированные разработчики получают сертификат, позволяющий им подписывать их приложения и загружать их на платформу для тестирования и отладки. Стоимость программы составляет 99$ в год для индивидуалов и небольших компаний и 299$ для крупных предприятий.
Компьютер Макинтош с процессором Intel и установленной ОС Leopard. SDK требует Макинтош с ОС Leopard версии не ниже 10.5.3. Apple требует Мак использующий процессор Intel работающий в 32-х разрядном режиме. Многие особенности SDK не будут работать должным образом на процессоре PPC или 64-х разрядном Intel. Необходимо также иметь много места на диске и как минимум 1 Гб оперативной памяти.
Как минимум один доступный USB 2.0 порт. Это позволит вам подключать ваш iPhone или iPod Touch к вашему компьютеру для передачи файлов и тестирования.
Подключение к интернет. Это подключение позволит вам тестировать ваши программы с соединением по WiFi так же, как и с соединением по EDGE.
Знакомство в Objective-C. SDK построен для Objective-C 2.0. Язык основан на стандартном С с объектно-ориентированными расширениями. Если у вас есть хоть какой-нибудь опыт С, то освоение Objective-C будет быстрым и простым. Просмотрите любой справочник по Objective-C/Cocoa для быстрого ознакомления.
Замечание
Хотя SDK поддерживает разработку для iPhone, iPod touch, и также для будущих возможных платформ, в этой книге речь для краткости будет вестись только об iPhone. Весь приведенный материал также применим и разработке для iPod touch, за исключением очевидных особенностей, связанных с телефонией и колонок. В тексте книге мы постарались отмечать все подобные исключения.
Связь с Автором
Если у вас есть комментарии или вопросы к этой книге пожалуйста пошлите мне письмо на электронный ящик erica@ericasadun.com или отправляйтесь на www.ericasadun.com. На моём веб сайте размещено много приложений, обсуждаемых в этой книге. Пожалуйста, не стесняйтесь посетить, загрузить программное обеспечение, читать документацию, а также оставлять свои комментарии.
Благодарности
Эта книга не существовала бы без усилий Chuck Toporek, Romny French, Chris Zahn, и всего AW production team (ооссобенно Gary Adair, Keith Cline, Kristy Hart, Cheryl Lenser, Chelsey Marti, Jake McFarland, Erika Millen). Спасибо также Neil Salkind, моему агенту, техническим рецензентам, которые помогли написать эту книгу объективно, не принимая желаемое за действительное, и всем моим коллегам в TUAW и the Digital Media/Inside iPhone blog. Я очень обязана широкому сообществу iPhone разработчиков, включая Alex
Schaefer, Nick Penree, James Cuff, Jay Freeman, Mark Montecalvo,August Joki, Max
Weisel, Optimo, Kevin Brosius, Planetbeing, Pytey, Roxfan, UnterPerro,Youssef Francis,
Bryan Henry, Daniel Peebles, ChronicProductions, Greg Hartstein, Emanuele Vulcano,
np101137 и Sean Heber, среди многих других, всех слишком много, чтобы назвать индивидуально. Их методы, предложения, и обратная связь помогли сделать эту книгу возможной. Особенная благодарность моей семье и друзьям, которые поддерживали меня в течение месяца, после месяца новой бета версий и кто терпеливо выносил мои необъясненные отсутствия и частые завывания отчаяния. Я ценю Вас всех представляя вас всех вместе со мной. И спасибо моим детям за их стойкость, когда они узнали, что сутулая спина и звук щелкающих ключей - бледная замена для матери.
Об Авторе
Эрика Садун стала автором, соавтором и внесла вклад в примерно три дюжины книг о технологиях, особенно в области программирования, цифрового видео и цифровой фотографии. Она неутомимо помешана на компьютерных технологиях, Эрика никогда не встречала устройство, в котором не нашла бы что-нибудь полезное для себя. В своем пёстром прошлом она сталкивалась с NeXT, Newton, iPhone и множеством других успешных и не очень устройств. В свободное от писательской деятельности время она со своим мужем воспитывают трех прелестных детей.
1 Введение в iPhone SDK
iPhone и iPod touch привнесли новые мобильные платформы для которых программировать одно удовольствие. Это первые устройства карманных компьютеров фирмы Apple. Несмотря на незначительные размеры они содержат первоклассную ОС X с богатым и разнообразным SDK, которое позволит вам планировать, создавать и продавать широкий диапазон программ. В своем проекте вы сможете воспользоваться сенсорным интерфейсом и потрясающими встроенными возможностями с помощью Xcode. В этой главе вы узнаете что из себя представляет SDK и создадите свою первую "Hello World" программу для iPhone.
Apple iPhone SDK. Вы готовы начать программировать iPhone? Вам понадобится Apple iPhone Software Development Kit (SDK), который бесплатно доступен членам Apple developer program. Загрузите вашу копию iPhone SDK с сайта Apple по адресу http://developer.apple.com/iphone. Он содержит несколько компонентов, которые являются базисом рабочего окружения для программирования iPhone.
Xcode. Xcode является самым важным инструментом в арсенале iPhone программиста. Он предоставляет всестороннюю разработку проекта и управление окружением, редактирование исходного кода, полную документацию, и графический отладчик. Xcode является надстройкой над GNU инструментарием с открытым исходным кодом, называемых gcc (компилятор) и gdb (отладчик).
Инструменты. Инструменты отслеживают как iPhone приложения работают изнутри. Это позволяет производить учёт использования памяти и отслеживает производительность. Это позволит вам идентифицировать и устранить проблемную зону в ваших приложениях и работать более эффективно. Для вашего анализа будут доступны временные графики производительности показывающие где ваше приложение расходует наибольшее количество ресурсов. Инструменты построены на основе открытого пакета DTrace разработанного компанией Sun Microsystems. Инструменты играют основную роль в поиске утечек памяти и оптимизации приложения для iPhone платформы.
Dashcode.
Dashcode позволяет создавать веб приложения исполняющееся независимо от традиционного окружения интернет обозревателя [виджеты]. В принципе виджет для iPhone работает в точности также как и на настольном компьютере, дополненный специальной компоновкой и отладочными средствами. Dashcode предоставляет возможность разработки веб приложения в отличие от его нативной компиляции и не рассматривается в этой книге.
Симулятор. iPhone симулятор запускается на Макинтоше и позволяет вам создавать и тестировать приложения на вашем компьютере. Вы можете делать это без соединения к настоящему iPhone или iPod touch. Симулятор предлагает тот же API, что используется на iPhone и предоставляет предварительный просмотр того как концепция вашего дизайна будет выглядеть. Работая с симулятором, Xcode создает Intel x86 код, который выполняется нативно на Макинтоше, вместо ARM кода используемого на iPhone.
Interface Builder (IB) предоставляет инструментарий для быстрого построения пользовательского интерфейса графически с последующей линковкой к ним из вашего Xcode исходника. Используя IB вы рисуете ваш интерфейс используя инструменты визуального проектирования и затем соединяете элементы вашего дизайна с объектами и методами вашего приложения.
Все вместе компоненты SDK позволяют вам разрабатывать как традиционные, так и веб приложения. С точки зрения разработки нативных приложений наиболее важными компонентами являются Xcode и Симулятор, наряду с Инструментами для настройки приложения. В дополнение к этому имеется один важный компонент, который поставляется с SDK, но который легко пропустить. Я называю его Cocoa Touch. Это библиотека классов поставляемая Apple для быстрой разработки приложений. Совокупность этих библиотек позволяет создавать графические приложения используя управляемые событиями элементы, такие как окно, текст или таблица. Cocoa Touch для iPhone служит своего рода аналогом AppKit для Mac OS X и позволяет создавать богатые, готовые к повторному использованию, интерфейсы.
Многие разработчики будут удивлены размером приложений для iPhone; он довольно мал. Главной причиной этому является библиотека Cocoa Touch. Возлагая на Cocoa Touch обработку всего тяжеловесного UI (интерфейса пользователя), ваши приложения могут сфокусироваться на выполнении своих индивидуальных задач.
Результатом является компактный, сосредоточеный код, который делает одно задание за раз.
Сборка iPhone проектов
Проекты iPhone Xcode содержат различные стандартные и пользовательские компоненты. Рисунок 1-1 показывает типичный проект. Элементы проекта включают в себя исходный код, связанные фреймворки и медиаданные такие как картинки и аудио файлы. Xcode компилирует ваши исходники, собирает фреймворки и формирует рабочее приложение, готовое для установки на iPhone. Он добавляет пакет ваших медиаданных в приложение, что позволит вашей программе получить доступ к этим медиаданным, когда приложение запущено на iPhone. iPhone код, как правило, пишется на Objective-C 2.0. Он представляет собой объектно-ориентированную
разновидность ANSI C, которое было разработано сочетанием C и Smalltalk. Если вы не знакомы с языком, Apple предлагает несколько отличных онлайн уроков на своем сайте разработчиков iPhone.
2 Глава 1. Введение в iPhone SDK
Среди них: введение в объектно-ориентированное программирование на Objective-C и справочное руководство по Objective-C 2.0. Эти материалы позволят ввести вас в курс дела.
Фреймворки (frameworks) это програмнный код предоставленный Apple как источник повторно используемых классов для Cocoa Touch. Добавить фреймворки в Xcode можно перетаскивая их в папку вашего проекта. После включения заголовочных файлов (таких как UIKit/UIKit.h и QuartzCore/QuartzCore.h) вы можете вызывать их процедуры в ваших программах.
Приложенные медиа могут содержать аудио, изображение и видео файлы связанные в пакет так же как и текстовые файлы которые помогают определять ваше приложение в iPhone ОС. Добавьте медиа файлы в свой проект и сошлитесь на них из своего кода. Проект, показанный в Figure 1-1, очень прост. Он состоит из одного файла кода(main.m) наряду с основным iPhone проектируют структуры(frameworks)(UIKit,
Foundation и Core Graphics) и нескольких файлов поддержки (helloworld.png, Default.png,
Icon.png, Info.plist). Вместе эти пункты формируют, все ингридиенты которые создают основное приложения типа Hello World.
Замечание
Файл HelloWorld_Prefix.pch автоматически создаётся средой Xcode. Он содержит скомпилированные файлы заголовков. NIB и XIB файлы (.nib, .xib) создаются в среде разработки Interface Builder. Эти файлы содержат пользовательский интерфейс, они привязываются к вашему приложению и вызываются вашим приложением во время выполнения.
3. Сборка проектов iPhone
Рисунок 1-1 Xcode Projects собирает исходный текст, фреймворки и медиа вместе, формируя основу для iPhone приложения.
Компоненты iPhone приложения
Аналогично приложениям на Макинтоше, iPhone приложения располагаются в пакетах. Пакеты приложений - это просто именованные папки, имеющие расширение .app. Содержимое и ресурсы Вашей программы находятся в этой папке, включая скомпилированные исполняемые файлы, медиа-компоненты (картинки, звуки), и несколько специальных файлов, в которых содержится информация о приложении для операционной системы. Эта папка рассматривается операционной системой как единый исполняемый пакет.
Иерархия папки приложения.
В отличии от Mac, бандлы iPhone не используют папки Contents и Resources для хранения данных или папку MacOS для выполняемых файлов. Все материалы располагаются на верхнем уровне директории. Например, вместо того, чтобы поместить папку языковой поддержки .lproj в директорию Contents/Resources, XCode автоматически помещяет ее в корень директории .app. Вы можете использовать папки для организации вашего проекта, но это папки определенные пользователем и не существует никакого стандарта. Базовая поддержка операционной системы в iPhone SDK включает класс NSBundle. Этот класс позволяет легко находить корневую директорию вашего приложения, и проходить по подпапкам для нахождения и загрузки ресурсов.
Замечание
Как и на Макинтоше, пользовательские области отражают системные. Официальные приложения распространяемые Apple расположены в основном каталоге /Applications. Приложения сторонних разработчиков расположены в /var/mobile/Applications. По большей части, основная файловая система UNIX скрыта "песочницей" (sandbox) iPhone, которая рассмотрена позже в этой секции.
Выполнение
Исполняемый файл Вашего приложения рассположен в корне папки прикладного пакета. Он должен обладать правами на запуск и выполнение и должен быть авторизован SpringBoard, iPhone версией Finder. Начиная с версии 1.2, которая была выпущена только для разработчиков, SpringBoard выполняет функции по контролю за приложениями, чтобы предотвратить несанкционированное выполнение кода . Эта особенность накладывает ограничение на использование утилит командной строки, которые Вы можете найти на других платформах UNIX. "Охранник" SpringBoard также вводит ограничение на объем используемой памяти. Система закрывает любой процесс, который использует слишком много ресурсов системы.
Файл Info.plist
В системе Макинтош, папка iPhone приложения содержит исключительно важный файл Info.plist. Файлы info.plist - это список параметров в формате XML, который описывает приложение для операционной системы.
Списки параметров хранят множество различных пар Ключ - Значение и могут быть сохранены в текстовом или сжатом двоичном формате.
В файле info.plist определяются выполняемый файл приложения (CFBundleExecutable) и идентификатор (CFBundleIdentifier). Этот идентификатор критически важен для правильного поведения и выполнения приложения.
4 Глава 1 Введение в iPhone SDK
Используйте рекомендуемый Apple доменный формат имен (например, com.sadun.appname) в ваших приложениях, редактируя свойства проекта в Xcode (смотри Рисунок 1-2). Укажите ваш персональный домен и позвольте Xcode добавить идентификатор продукта. Для смены идентификаторов,
щелкните правой кнопкой мыши на файле проекта в Xcode и выберите Get Info из выпадающего меню. Используйте поле
Search для поиска ключа Product_Name и при необходимости отредактируйте его значение.
Компоненты приложений iPhone
Рисунок 1-2. Изменение идентификатора вашего приложения редактированием файла info.plist. Идентификатор PRODUCT_NAME установлен в свойствах вашего проекта.
Идентификатор продукта позволяет вам взаимодействовать с другими приложениями и правильно регистировать ваше приложение в SpringBoard, “Finder-е” для iPhone.
SpringBoard обслуживает домашний экран с которого вы запускаете ваши приложения. Идентификатор продукта также формирует основу для встроенной системы хранения параметров и настроек по умолчанию.
Параметры приложения автоматически сохраняются в пользовательскую папку Library (в /var/mobile/
Library/Preferences) используя идентификатор приложения. Этот идентификатор дополняется расширением .plist (например, com.sadun.appname.plist), и настройки сохраняются используя двоичный формат. Вы можете прочитать двоичный plist передав его на Macintosh. Используйте Apple утилиту plutil для конвертирования из двоичного в текстовый XML формат:
plutil –convert xml1 plistfile. Apple использует двоичный формат для сокращения занимаемого места и улучшения быстродействия.
Как и в случае с Macintosh, файлы Info.plist обеспечивают дополнительную гибкость и высокие настройки. С ним, вы можете установить переменные SpringBoard (например, SBUsesNetwork) или определить, как должен показываться на дисплее ваш значок (например, UIPrerenderedIcon). Несколько переменных SpringBoard позволяет определить несколько функций для одного приложения. Например, Фотографии и Камера являются фактически приложениями MobileSlideShow, играя отдельные "роли". Вы также можете указать, является ли приложение скрытым.
Остальные стандартные Info.plist ключи включая UIStatusBarStyle для настройки вида и цвета статуса и UIStatusBarHidden для скрытия его вцелом. UIInterfaceOrientation позволяет вам использовать акселерометр только для landscap режима (UIInterfaceOrientationLandscapeRight). Зарегистрируйте свое приложение URL схемой ( например myCustomApp://) настраивая CFBundleURLTypes. Смотри часть 10, "Связь с сервисами", для детальной информации о URL схемах.
Значок и изображение по умолчанию Icon.png и Default.png являются двумя ключевыми файлами изображений. Icon.png выступает в качестве значка приложения, изображения используемого для представления приложения на домашнем экране SpringBoard. Default.png (официально известный как "изображение запуска") предоставляет собой заставку отображаемую во время запуска приложения. В отличие от Default.png, имя файла значка не является фиксированным. Если вы не хотите использовать "Icon.png", измените значение ключа CFBundleIconFile в вашем файле Info.plist на любое имя файла, которое вы хотите использовать.
Apple рекомендует сопоставить Default.png фону вашего приложения. Многие разработчики используют изображение Default.png для показа заставки или сообщения "Пожалуйста подождите" во время запуска приложения. Это идет вразрез с рекомендациями Apple о человеческом интерфейс (изображения во время запуска должны обеспечивать визуальную преемственность, а не извещать или оправдывать задержки), но совершенно понятно их использование. "Официальный" размер значка приложения 57 на 57 пикселов. SpringBoard автоматически изменяет размеры больших изображений. Получается плоское (не глянцевое) изображение с квадратными углами. SpringBoard разглаживает и делает углы круглыми и автоматически добавляет эффект глянца и блеска. Если по каким-то веским причинам вам необходимо использовать оригинальное изображение, установите свойство UIPrerenderedIcon в значение <true/> в вашем Info.plist файле.
Примечание: Если вы планируете добавить ваше приложение в App Store, вам необходимо создать значок вашего приложения в высоком разрешении (512 на 512 точек). Хотя вы можете растянуть ваш значок 57 на 57 точек icon.png, но это будет не очень хорошо выглядеть. Пойдя другим путём, вы получите высококачественное изображение, которое вы можете сжать, чтобы получить значок.
Файлы XIB (NIB)
Interface Builder создает файлы XIB (также называемые NIB на Macintosh) которые хранят адресуемые подготовленные классы интерфейса пользователя. Эти файлы появляются на верхнем уровне бандла с вашим приложением и вызываются напрямую из програмного кода. На момент написания книги еще не было установленно именование файлов Interface Builder-а, так что использование расширения .xib (Xcode Interface Builder) пока является преобладающим для iPhone.
Примечание: Если вы разрабатываете приложение без использования XIB или NIB файлов "Interface-Builder", удалите ключ theNSMainNibFile из файла Info.plist и исключите автоматически сгенерированный файл MainWindow.xib из вашего проекта.
6 Глава 1 Введение в iPhone SDK
Файлы которые вы не найдете в бандле приложения.
Так же как и на Макинтош, файлы которых вы не найдете внутри бандла приложения включают в себя файлы настроек (как правило, хранятся в песочнице приложения в Library/Preferences), Плагины приложения (в данный момент хранятся в /System/Library и недоступны для разработчика) и документы (хранятся в папке Documents песочницы).
Другие вещи которых может не хватать (с точки зрения программиста Макинтош) - это папки Application Supports. Копируйте файлы, которые обычно располагаются в папке Application Support в ваши дериктории Documents или Library.
Sandboxes (Песочницы)
Операционная система iPhone ограничивает всю разработку с использованием SDK "песочницей" приложения из соображений безопасности. Песочница iPhone ограничивает доступ вашего приложения к файловой системе до минимального набора папок, сетевых ресурсов или аппаратного обеспечания. Это похоже на посещение чересчур строгой школы с параноидальным завучем.
Ваше приложение может "играться" в своей песочнице, но оно не может залезать в чужие песочницы.
Вы не можете делиться игрушками. Вы не можете делиться данными. Вы не можете устраивать беспорядок в административных офисах. Ваши файлы обязаны оставаться в папках, выделенных Вам песочницей (sandbox), и Вы не можете копировать файлы в папки или из папок других приложений.
Ваше приложение владеет только его собственными папками Library (Библиотека приложения), Documents (Документы приложения), и /tmp (папка для временных файлов). Это имитация стандартных папок, которые вы могли бы использовать на платформах с менее строгими ограничениями, но она жестко ограничивает ваши возможности по записи и чтению данных.
В дополнение к этим ограничениям, Ваше приложение должно быть подписано цифровым ключом и идентифицировать себя в операционной системе с помощью закодированного идентификатора приложения, который Вы должны создать на сайте "Apple’s developer program" (официальный сайт корпорации Apple для разработчиков http://developer.apple.com/iphone/index.action ).
Положительной стороной песочниц(sandbox) является тот факт, что все данные приложения синхронизуются с домашним компютером, когда бы вы не подсоединились к нему. К сожалению, Apple не описывает, как получить доступ к этим данным из настольных приложений Windows или Макинтош (Глава 7, “Мультимедия,” обсуждаем воостановление данных из "mdbackup" файлов, созданных приложением "iTunes" и его "Mobile Devices framework".)
Замечание
Специфичные файлы песочницы (Sandbox) (расширение .sb) хранятся в /var/mobile/Applications вместе с песочница(sandbox) директориями. Эти файлы управляют такими привилегиями как чтение-запись различных битов файловой системы. Если Вы не можете представить это себе, не редактируйте эти файлы. Вы сделаете ваше приложение неработоспособным. Например, файл песочницы (sandbox) обычно находится в /usr/share/sandbox.
7 Компоненты приложений для iPhone
Ограничения платформы
Когда речь идет о мобильных платформах, таких как iPhone, всегда возникает ряд проблем такие
как хранение, ограничения взаимодействия и время жизни аккумулятора. Мобильные платформы не могут предложить столько дискового пространства, сколько могут десктопы. И вместе с ограничениями дискового пространства, взаимодействия и энергии возникают реальные ограничения на то, что Вы, как разработчик, можете сделать.
С iPhone вы не можете разрабатывать для большого экрана, мышки, клавиатуры или всегда включенным питанием. Вместо этого, реалии платформы должны формировать и направлять ваше развитие. К счастью, Apple проделала невероятную работу разрабатывая
новую платформу, которая хоть каким-то образом повышает возможности в условиях ограниченного дискового пространства, пользовательского интерфейса и времени жизни аккумулятора.
Ограничения на объём хранилища данных
iPhone содержит мощную, но компактную инсталляцию OS X. Несмотря на то, что вся операционная система iPhone занимает не более нескольких сотен мегабайт (ничтожный объём в сравнении с современными традициями инсталляции крупных операционных систем), она предоставляет обширную библиотеку фреймворков. Эти фреймворки прекомпилированных процедур позволяют пользователям iPhone работать с широким спектром компактных приложений из различных областей, от телефонии до воспроизведения звука, от электронной почты до веб-браузинга. iPhone предоставляет достаточную программную поддержку для создания гибких интерфейсов, при этом сохраняя минимальные размеры системных файлов, что позволяет им умещаться в узких рамках ограничений на объём.
Ограничения на доступ к данным
Каждое приложение для iPhone выполняется в "песочнице". Иначе говоря, оно обитает в жёстко регулируемом отделе файловой системы. Ваша программа не может получить доступ к другим приложениям и определённым отгороженным папкам, включая медиатеку iTunes. Однако она может обратиться к любым данным, которые свободно доступны в Интернете, когда iPhone подключен к сети.
© http://ericasadun.com
Original (English): iPhone Developers Cookbook (Development Native Applications for the iPhone)
Translation: © propsan, Николай, Евгений, jumpow, walzit69, Лев Левин, carlogulliani, kiroleg, 5p1tfire, zapko, nuclear, Gargo, ne2p, rashn, Harley, archivarius, og, Alexander Tsioka, Clevik, Pawylon, Антон, KII, blog.mifki.com, gen1us, Денис, lifted, wizz777, kazakoff, Amador, gray, XPert, PolDen, alex_choo, Javakka, jamcb, k0sh, solnushock, iMaxx, mscoder, hellra1ser, slavamax, SLAVAMAX.COM, perch, MrKrabs, GodHappy, Godword, slatvick, lesch, paadoks, kit-point, VitZa, OXYGENIUM, S.R.A.M., sazan, Lam3r, fralx, Someone.else, lorantalas, hose-i, x0000ff, flamingdeth, ArdiPolz, IgorChe, Александр Островский, Andreyc4d, skazkin, iTranslate, asik, C0x, GraGal, Samigg, iamskeeet, degravia, magic146, strelok.ndv, evol, solodky, vit.mifki.com, motto, Jago, larisko, Randy, just-citizen, Bromberg, iMonster, d00mw01f, gafiatulin, Дмитрий, DelficsUA, Selektor, Andrey, indigoflow, shakuro, Batu, Tecs, Cybang, Alext35s, maxname, _PROF_, vv, m0l0h, Aleksandr Selivanov, xneos97, Kuder, HUJG, dmtrlbdv, akaLef, Alexend-tsai, murkt.org.ua, shoco, PHeisenberg, mirko, Barblga, asp24, Erkin, ikreig, romppa, Suor, yo007, Verus, hakeem, jakartur, seochainik, kovalev .
