Вандад Нахавандипур
iOS. Приемы программирования

   Научный редактор О. Сивченко
   Переводчик О. Сивченко
   Технический редактор Н. Рощина
   Литературные редакторы Н. Гринчик, Н. Рощина
   Художники Л. Адуевская, Н. Гринчик
   Корректор Е. Павлович
   Верстка А. Барцевич
 
   © ООО Издательство "Питер", 2014
 
   Все права защищены. Никакая часть электронной версии этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, включая размещение в сети Интернет и в корпоративных сетях, для частного и публичного использования без письменного разрешения владельца авторских прав.
 
   © Электронная версия книги подготовлена компанией ЛитРес ()
* * *

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html). Этот документ необходимо прочитать любому программисту, работающему с iOS. На самом деле я считаю, что эти документы обязательно должны прочитать также сотрудники отделов разработки и дизайна продукции в любой компании, занимающейся iOS.
   Рекомендую также просмотреть документ iOS Application Programming Guide (Руководство по программированию приложений для iOS), имеющийся в iOS Reference Library (Справочной библиотеке iOS), где даются полезные советы по созданию отличных приложений для iOS: https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html.
   В iOS 7 значительно изменились принципы представления компонентов пользовательского интерфейса на экране. Мы подробно обсудим все эти изменения и поговорим о том, как программист может применять эти новейшие API для создания замечательных приложений для iOS 7. Кроме того, я рекомендую вам ознакомиться с документом iOS 7 UI Transition Guide (Руководство по переходу на пользовательский интерфейс iOS 7) от Apple (https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/index.html#//apple_ref/doc/uid/TP400 13174). В нем описаны все изменения, связанные с пользовательским интерфейсом, появившиеся в последней версии SDK.
   Читая главу 12, вы обратите внимание на то, что в ней одной из наиболее важных тем являются блоковые объекты. Блоковые объекты рассматриваются в книге вкратце, но чтобы подробнее разобраться с этой темой, рекомендую познакомиться с руководством A Short Practical Guide to Blocks (Краткое практическое руководство по блоковым объектам), доступным по следующей ссылке: https://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index.html%23/apple_ref/doc/uid/TP400 09758.
   В книге я буду часто упоминать пакеты (bundles) и говорить о том, как загружать из пакетов изображения и данные. В издании будет кратко рассказано о пакетах, но если хотите разобраться с ними подробнее, прочтите Bundle Programming Guide (Руководство по программированию пакетов) по адресу: https://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/Introduction/Introduction.html.

vinitski@minsk.piter.com (издательство «Питер», компьютерная редакция).
   Мы будем рады узнать ваше мнение!
   На сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгах.

Глава 1. Реализация контроллеров и видов

1.0. Введение

   В iOS 7 появилось множество новых пользовательских возможностей, а также масса новых API, с которыми мы, программисты, можем вволю экспериментировать. Вероятно, вы уже знаете, что в iOS 7 разительно изменился пользовательский интерфейс. Во всех предыдущих версиях он оставался практически неизменным по сравнению с первой версией iOS, и поэтому многие приложения разрабатывались так, как будто пользовательский интерфейс никогда не изменится. В настоящее время графические дизайнеры столкнулись с целым букетом проблем, так как теперь требуется создавать интерфейсы и продумывать пользовательские взаимодействия с программой так, чтобы программа хорошо смотрелась и в iOS 7, и в более ранних версиях.
   Чтобы программировать приложения для iOS 7, вы должны знать основы языка Objective-C, с которым мы будем работать на протяжении всей этой книги. Как понятно из названия, язык Objective-C основан на С, но имеет определенные расширения, которые облегчают оперирование объектами. Объекты и классы имеют фундаментальное значение в объектно-ориентированном программировании (ООП). К числу объектно-ориентированных языков относятся Objective-C, Java, C++ и многие другие. В Objective-C, как и в любом объектно-ориентированном языке, вы имеете доступ не только к объектам, но и к примитивам. Например, число –20 (минус двадцать) можно выразить в виде примитива следующим образом:
   NSInteger myNumber = -20;
   В этой простой строке кода определяется переменная myNumber, относящаяся к типу данных NSInteger. Ее значение устанавливается в 20. Так определяются переменные в языке Objective-C. Переменная – это простое присваивание имени местоположению в памяти. В таком случае если мы задаем 20 в качестве значения переменной myNumber, то сообщаем машине, что собираемся выполнить фрагмент кода, который поместит указанное значение в область памяти, соответствующую переменной myNumber.