Программирование на Objective-C 2.0
Шрифт:
Управление памятью
Копирование объектов
Архивация
Введение в Сосоа
Написание приложений iPhone
Приложение A
Приложение B
Приложение C
Приложение D
Глава 1. Введение
Деннис Ритчи (Dennis Ritchie) был первым, кто в начале 1970-х гг. начал про-граммировать на языке С в компании AT&T Bell Laboratories. Однако до конца 1970-х гг. этот язык не получат широкого распространения и поддержки, по-скольку нс существовало готовых компиля торов с языка С для коммерческого использования вне Bell Laboratories. Росту популярности С способствовал рост популярности операционной системы UNIX, которая почти целиком была на-писана на С.
В начале 1980-х
Компания NeXT Software в 1988 г. лицензировала язык Objective-C, а также разработала его библиотеки и среду разработки под названием NEXTSTEP. В 1992 г. поддержка Objcctivc-C была добавлена в среду разработки GNU организации Free Software Foundation. Авторские права на все продукты Free Software Foundation (FSF) принадлежат FSF. Они выпускаются как лицензия GNU General Public License.
В 1994 r. NeXT Computer и Sun Microsystems выпустили стандартизованную спецификацию системы NEXTSTEP под названием OPENSTEP. Реализация OPENSTEP, выпущенная Free Software Foundation, называется GNUStep. Версия для Linux, включающая также ядро Linux и среду разработки GNUStep, называется поэтому LinuxSTEP.
20 декабря 1996 г. компания Apple Computer объявила, что приобретает NeXT Software, и среда NEXTSTEP/OPENSTEP стала основой для следующей основной версии операционной системы Apple — OS X. Версия компании Apple этой среды разработки была названа Cocoa. Встроенная поддержка языка Objectivc- С в сочетании со средствами разработки, такими как Project Builder (или его преемника Xcode) и Interface Builder, позволила Apple создать мощную среду разработки для разработки приложений в Mac OS X.
В 2007 г. Apple выпустила обновление языка Objcctive-C и назвала его Objective-C 2.0. Эта версия языка описывается в настоящем (втором) издании этой книги.
После выпуска iPhone в 2007 г. разработчики программ потребовали, чтобы им предоставили возможности разрабатывать приложения для этого передового устройства. Поначалу компания Apple сомневалась, стоит ли предоставлять разработку приложений сторонним компаниям. Для «умиротворения» требо-вательных разработчиков компания предоставляла им возможность разработки веб-приложений. Такое веб-приложение выполняется в iPhone под управлением встроенного веб-браузера Safari и требует, чтобы пользователь подсоединялся к веб-сайту, где содержится приложение, чтобы запускать его. Разработчики были недовольны из-за многих ограничений, присущих веб-приложениям, и вскоре компания Apple объявила, что разработчики смогут разрабатывать так называемые собственные (native) приложения для iPhone.
Собственное приложение хранится на самом iPhone и выполняется под уп-равлением операционной системы iPhone таким же образом, как встроенные приложения iPhone {такие как Contacts, iPod и Weather). OS iPhone является фактически версией Mac OS X, а это означает, что приложения для iPhone можно разрабатывать и отлаживать, например, на MacBook Pro. И действительно, компания Apple вскоре выпустила мощный комплект разработки программ (Software Development Kit, SDK), который позволил быстро разрабатывать и отлаживать приложения iPhone. Наличие имитатора (simulator) iPhone позволило разработчикам отлаживать свои приложения на их компьютерах, без не-обходимости загрузки и тестирования программ непосредственно на iPhone или iPod Touch. 1.1. Что вы узнаете из этой книги
Обдумывая, как писать учебник по Objective-C, я должен был принять важное решение. Как и в других книгах по Objective-C, я мог бы предположить, что читатель уже знает, как писать программы на языке С. Я мог бы обучать этому языку, исходя из возможностей обширной
Однако такой подход имеет несколько проблем. Во-первых, изучение всего языка С перед изучением Objective-C неприемлемо. Процедурный язык С содержит много средств, которые не являются необходимыми для программирования на Objective-C, особенно на уровне новичков. На самом деле обращение к некоторым из этих средств противоречит методологии надежного объектноориентированного программирования. Также нет смысла в изучении деталей процедурного языка перед изучением объектно-ориентированного. Это дезориентирует профаммиста и мешает осваивать объектно-ориентированный подход к профаммированию. То, что Objective-C является расширением языка С, вовсе не означает, что нужно сначала выучить С.
Поэтому я решил, что нс буду начинать с обученпия языку С и не буду пред-полагать, что читатель знает С. Вместо этого я принял необычный подход: обу-чение языку Objective-C и базовому языку С как одному объединенному языку сточки зрения объектно-ориентированного профаммирования. Цель этой книги определена се названием — обучение тому, какпрофаммировать на Objective- С. Она не содержит подробных сведений о том, как использовать средства раз-работки, доступные для ввода и отладки программы, и не содержит полных инструкций по разработке интерактивных фафических приложений с помощью Cocoa. Вы можете ознакомиться с этим материалом где-либо еще после этого, как научитесь писать профаммы на Objective-C. На самом деле все это будет намного проще после того, как вы разберетесь с профаммированием на Objective-C. В этой книге не предполагается, что читатель имеет серьезный опыт программирования (или вообще имеет такой опыт). И если вы новичок в программировании, то сможете изучать Objcctive-C как свой первый программный язык.
Эта книга учит языку Objectivc-C с помощью примеров. Представляя каждое новое средство языка, я обычно привожу пример небольшой законченной программы, иллюстрирующей это средство. Правильно выбранный пример программы действует подобно изображению, которое может заменить тысячу слов. Я настоятельно рекомендую выполнить каждую программу (все они дос-тупны в Интернете) и сравнить результаты, полученные на вашем компьютере, с результатами, показанными в книге. Это позволит вам не только изучать язык и его синтаксис, но и знакомиться с компиляцией и выполнением программ на Objective-C. 1.2. Как организована эта книга
Эта книга разделена на три логические части. В части I, «Язык Objectivc-C 2.0», излагаются основы самого языка. В части II,» Framework Foundation «, описывается работа с обширным набором готовых классов, которые образуют фреймворк Foundation. В части III, «Сосоа и SDK iPhone», дастся обзор фреймворка Cocoa Application Kit и приводится процесс разработки простого приложения iPhone с использованием фреймворка UIKit, а также разработка и отладка кода с помощью Xcode и Interface Builder.
Фреймворк — это набор классов и процедур, логически сгруппированных для упрощения разработки программ. Многие возможности программирования на Objective-C основываются на использовании существующих разнообразных фреймворков. В главе 2 вы напишете свою первую профамму на Objective-C.
Поскольку это не книга по профаммированию для Сосоа, здесь не приводится подробное описание фафических пользовательских интерфейсов (GUI), и они почти не затрагиваются до части III. Поэтому мне потребовался подход, позволяющий вводить данные в профамму и выводить результаты. В большинстве примеров этой книги ввод в профамму выполняется с клавиатуры, а вывод выполняется в окне: это терминальное окно (Terminal), если вы используете дсс из командной строки, или консольное окно (Console), если используется Xcode.