355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Стивен Кочан » Программирование на Objective-C 2.0 » Текст книги (страница 1)
Программирование на Objective-C 2.0
  • Текст добавлен: 19 сентября 2016, 13:02

Текст книги "Программирование на Objective-C 2.0"


Автор книги: Стивен Кочан



сообщить о нарушении

Текущая страница: 1 (всего у книги 32 страниц)

Table of Contents

Introduction

Глава 1. Введение

1.1. Что вы узнаете из этой книги

1.2. Как организована эта книга

Глава 2. Программирование на Objective-C

2.1. Компиляция и выполнение программ

2.2. Объяснение вашей первой программы

2.3. Вывод значений переменных

Глава 3. Классы, объекты и методы

3.1. Понятие объекта

3.2. Экземпляры и методы

3.3. Класс Objective-C для работы с дробями

3.4. Секция @interface

3.5. Секция @implementation

3.6. Секция program

3.7. Доступ к переменным экземпляра и инкапсуляция данных

Глава 4. Типы данных и выражени

4.1. Типы данных и константы

4.2. Арифметические выражения

4.3. Операторы присваивания

4.4. Класс Calculator

4.5. Битовые операторы

4.6. Типы: _Bool, _Complex и _Imaginary

Глава 5. Циклы в программах

5.1. Оператор for

5.2. Оператор while

5.3. Оператор do

5.4. Оператор break

5.5. Оператор continue

Глава 6. Принятие решений

6.1. Оператор if

6.2. Оператор switch

6.3. Булевы переменные

6.4. Условный оператор

Глава 7. Более подробно о классах

7.1. Разделение файлов объявлений и определений (секции interface и implementation)

7.2. Синтезируемые методы доступа

7.3. Доступ к свойствам с помощью оператора «точка»

7.4. Передача методам нескольких аргументов

7.5. Локальные переменные

7.6. Ключевое слово self

7.7. Выделение памяти и возврат объектов из методов

Глава 8. Наследование

8.1. Все начинается с корня

8.2. Расширение посредством наследования: добавление новых методов

8.3. Замещающие методы

8.4. Расширение через наследование: добавление новых переменных экземпляра

8.5. Абстрактные классы

Глава 9. Полиморфизм, динамический контроль типов и динамическое связывание

9.1. Полиморфизм: одно имя, различные классы

9.2. Динамическое связывание и тип id

9.3. Проверка на этапе компиляции и проверка на этапе выполнения

9.4. Тип данных id и статический контроль типов

9.5. Как задавать вопросы о классах

9.6. Обработка исключительных ситуаций с помощью @try

Глава 10. Более подробно о переменных и типах данных

10.1. Инициализация классов

10.2. Снова об области действия

10.3. Описатели хранения для класса

10.4. Перечислимые типы данных

10.5. Оператор typedef

10.6. Преобразования типов данных

Глава 11. Категории и протоколы

11.1. Категории

11.2. Протоколы

11.3. Составные объекты

Глава 12. Препроцессор

12.1. Оператор #define

12.2. Оператор #import

12.3. Условная компиляция

Глава 13. Базовые средства из языка С

13.1. Массивы

13.2. Функции

13.3. Структуры

13.4. Указатели

13.5. Объединения

13.6. Это не объекты!

13.7. Различные средства языка

13.8. Как это действует

Глава 14. Введение в Foundation Framework

Глава 15. Числа, строки и коллекции

Глава 16. Работа с файлами

Глава 17. Управление памятью

17.1. Автоматически высвобождаемый пул

17.2. Подсчет ссылок

17.3. Пример автоматического высвобождения

17.4. Сводка правил по управлению памятью

17.5. Сборка мусора

Глава 18. Копирование объектов

18.1. Методы copy и mutableCopy

18.2. Поверхностное и глубокое копирование

18.3. Реализация протокола ``

18.4. Копирование объектов в методах-установщиках и методах-получателях

Глава 19. Архивация

19.1. Архивация со списками свойств XML

19.2. Архивация с помощью NSKeyedArchiver

19.3. Написание методов кодирования и декодирования

19.4. Использование NSData для создания нестандартных архивов

19.5. Использование архиватора для копирования объектов

Глава 20. Введение в Сосоа

20.1. Уровни фреймворков

20.2. Cocoa Touch

Глава 21. Написание приложений iPhone

21.1. Комплект разработки программ (SDK) для iPhone

21.2. Ваше первое приложение iPhone

21.3. Калькулятор дробей для iPhone

21.4. Сводка шагов

Приложение A

Приложение B

Приложение C

Приложение D

Программирование на Objective-C 2.0

Кочан Стивен

Введение

Программирование на Objective-C

Классы, объекты и методы

Типы данных и выражени

Циклы в программах

Принятие решений

Более подробно о классах

Наследование

Полиморфизм, динамический контроль типов и динамическое связывание

Более подробно о переменных и типах данных

Категории и протоколы

Препроцессор

Базовые средства из языка С

Введение в Foundation Framework

Числа, строки и коллекции

Работа с файлами

Управление памятью

Копирование объектов

Архивация

Введение в Сосоа

Написание приложений iPhone

Приложение A

Приложение B

Приложение C

Приложение D

Глава 1. Введение

Деннис Ритчи (Dennis Ritchie) был первым, кто в начале 1970-х гг. начал про-граммировать на языке С в компании AT&T Bell Laboratories. Однако до конца 1970-х гг. этот язык не получат широкого распространения и поддержки, по-скольку нс существовало готовых компиля торов с языка С для коммерческого использования вне Bell Laboratories. Росту популярности С способствовал рост популярности операционной системы UNIX, которая почти целиком была на-писана на С.

В начале 1980-х гг. Бред Кокс (Brad J. Сох) разработал язык Objective-C. Этот язык основывался на языке SmallTalk-80. Objective-C был создан поверх языка С, то есть к языку С были добавлены расширения для создания нового языка программирования, который позволял создавать объекты и работать с ними.

Компания 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, я мог бы предположить, что читатель уже знает, как писать программы на языке С. Я мог бы обучать этому языку, исходя из возможностей обширной библиотеки процедур, например, в фреймворках Foundation и Application Kit. В некоторых книгах принято обучать использованию средств разработки, таких как Xcodc и Interface Builder на Маках.

Однако такой подход имеет несколько проблем. Во-первых, изучение всего языка С перед изучением 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.

В главе 3, «Классы, объекты и методы», излагаются основы объектно-ори-ентированного профаммирования. В этой главе вводится некоторая терминология, но она сведена к минимуму. Там же вводится механизм определения класса и средства передачи сообщений экземплярам или объектам. Преподаватели и опытные профаммисты отмстят, что для объявления объектов я использую статический контроль типов. Я считаю, что это наиболее подходящий способ для начала обучения, поскольку компилятор может обнаруживать больше ошибок, делая профамму более понятной и позволяя начинающему программисту явно объявлять типы данных, когда они известны. Поэтому понятие типа id и описание его возможностей нс затрагиваются в полной мере до главы 9, «Полиморфизм, динамический контроль типов и динамическое связывание».

В главе 4, «Типы данных и выражения», описываются базовые типы данных Objective-C и их применение в ваших программах.

В главе 5, «Циклы в программах», вводятся три оператора цикла: for, while и do.

Принятие решений является основой любого языка программирования. В главе 6, «Принятие решений» подробно описываются операторы if и switch языка Objective-C.

В главе 7, «Более подробно о классах», приводится более глубокое изложение работы с классами и объектами. Здесь подробно описывается, как работать с методами, передавать несколько аргументов методам и использовать локальные переменные.

В главе 8, «Наследование», вводится ключевое понятие наследования. Это упрощает разработку программ, поскольку вы можете использовать то, что пе-редается из вышележащих уровней. Наследование и подклассы упрощают из-менение и расширение существующих определений классов.

В главе 9 описываются три основополагающие характеристики языка Objective-C. Здесь излагаются три ключевые концепции: полиморфизм, дина-мический контроль типов и динамическое связывание.

В главах 10—13 завершается описание языка Objective-C. Здесь рассматри-ваются такие вопросы, как инициализация объектов, протоколы, категории, препроцессор, и некоторые основ языка С: функции, массивы, структуры и указатели. Эти возможности не обязательно использовать (обычно их нужно избегать) в начальный период разработки объектно-ориентированных приложений. Рекомендуется пропустить главу 13 при первом чтении этой книги и возвращаться к ней по мере необходимости для изучения какого-либо конкретного средства языка С.

Часть II начинается с главы 14, «Введение в Foundation Framework», где дается введение во фреймворк Foundation и описывается доступ к его документации.

В главах 15-19 описываются важные возможности Foundation framework. Это числовые и строковые объекты, коллекции, файловая система, управление па-мятью и процесс копирования и архивации объектов.

Закончив работу с частью II, вы сможете разрабатывать довольно сложные программы на Objective-C, которые используют фреймворк Foundation.

Часть III начинается с главы 20, «Введение в Сосоа». Здесь дается краткий обзор фреймворка Application Kit, содержащего классы, необходимые для раз-работки сложных графических приложений на Маках.

В главе 21, «Написание приложений iPhone», дается введение в SDK iPhone и фреймворк UIKit. Здесь показан пошаговый подход к написанию простого приложения iPhone (или iTouch) и рассматривается приложение-калькулятор, позволяющее выполнять простые арифметические вычисления с дробями с помощью iPhone.

Поскольку объектно-ориентированный подход требует использования до-вольно обширной терминологии, в приложении А, «Словарь», приводятся оп-ределения некоторых распространенных терминов.

В приложении В, «Сводка языка Objective-С», приводится сводка языка Obiective-C для быстрого поиска нужной информации.

В приложении С, «Исходный код адресной книги» приводится листинг ис-ходного кода для двух классов, которые были разработаны и широко использо-вались в части II. В этих классах определяются классы для адресных карточек и адресной книги. Методы этих классов позволяют выполнять такие простые операции, как добавление и удаление адресных карточек из адресной книги, поиск нужного адресата, вывод содержимого адресной книги и т.д.

Изучив написание программ на Objective-C, можно продолжить работу в нескольких направлениях. Можно изучить более глубоко базовый язык про-граммирования С, начать разрабатывать программы Cocoa для выполнения в Mac OS X или более сложные приложения iPhone. В любом случае, приложение D, «Ресурсы» поможет вам продвинуться в нужном направлении.

Часть I. Язык Objective-C 2.0 Глава 2. Программирование на Objective-C

В этой главе мы сразу приступим к делу и напишем первую программу на Objective-C. Пока мы не будем работать с объектами – это тема следующей гла-вы. Сначала необходимо понять, что такое ввод программы, ее компиляция и выполнение. Это важно при программировании и в Windows, и на компьютерах Macintosh.

Для начала рассмотрим простую программу, которая выводит на экране фразу «Programming is fun!» (Программировать весело!). Эту задачу выполняет программа «Программа 2.1», приведенная ниже. // First program example (Первый пример программы) #import int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog ((@"Programming is fun!"); [pool drain]; return 0; } 2.1. Компиляция и выполнение программ

Прежде чем приступить к подробному описанию программы, рассмотрим ее компиляцию и выполнение. Для компиляции и выполнения этой программы можно использовать Xcode или компилятор GNU Objective-C в окне Terminal. Мы рассмотрим оба метода, чтобы вы могли решить, каким из них будете работать с программами в остальной части книги.

Примечание. Соответствующие средства уже предустановлены на всех Маках, которые поставляются с системами OS X. Если вы устанавливаете OS X отдель-но, установите также Developer Tools. Xcode

Xcode – это мощное приложение, позволяющее вводить, компилировать, от-лаживать и выполнять программы. Если вы намерены разрабатывать приложения на Маке, вам необходимо освоить это мощное инструментальное средство. Здесь вы только ознакомитесь с ним, в дальнейшем мы разработаем с его помо-щью одно графическое приложение. Xcode находится в папке Developer внутри подпапки Applications. На рис. 2.1 показан значок Xcode. Запустите Xcode. В меню File (Файл) выберите New Project (Новый проект), см. рис. 2.2.

Рис. 2.1. Значок Xcode

Появится окно, показанное на рис. 2.3.

Рис. 2.2. Запуск нового проекта

Рис. 2.3. Запуск нового проекта: выбор типа приложения

Выполните прокрутку в левой панели, пока не появится Command Line Utility (Утилита командной строки). В правой панели выделите Foundation Tool. Теперь появится окно, показанное на рис. 2.4.

Рис. 2.4. Запуск нового проекта: создание инструмента Foundation

Щелкните на Choose (Выбрать). Появится новое окно (рис. 2.5).

Рис. 2.5. Окно списка файлов Xcode

Мы назовем эту программу progl. Введите это имя в поле Save As (Сохранить как). Возможно, для проектов этой книги следует создать отдельную папку. Я держу проекты для этой книги в папке ObjC Progs.

Щелкните на кнопке Save (Сохранить), чтобы создать новый проект. По-явится окно проекта (рис. 2.6).

Ваше окно может выглядеть по-другому, если вы уже работали с Xcode или изменяли какие-то параметры Xcode.

Теперь пора ввести первую программу. Выберите файл progl.m в правой вер-хней панели. Окно Xcode показано на рис. 2.7.

В таблице 2.1 приводится список распространенных расширений имен файлов. Расширение имени для исходных файлов Objective-C – .m.

Табл. 2.1. Распространенные расширения имен файлов Расширение Описание .c Исходный файл на языке С .cc, .cpp Исходный файл на языке C++ .h Файл заголовка (Header) .m Исходный файл Objective-C .mm Исходный файл Objective-C++ .pl Исходный файл Perl .o Объектный (компилированный) файл

Рис. 2.6. ОКНО проекта Xcode prog1

Рик. 2.7. Файл progl.m и окно редактирования (edit)

В окне проекта Xcode (внизу справа) показан файл с именем progl.m, содержащий следующие строки: #import int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... (введите здесь код) NSLog (@"Hello World!"); [pool drain]; return 0; }

Примечание. Если у вас не отображается содержимое этого файла, попробуйте щелкнуть и вытянуть нижнюю правую панель, чтобы снова появилось окно ре-дактирования. Это может произойти, если вы уже работали с Xcode.

В этом окне Xcode предоставляет файл шаблона, который вы можете редак-тировать. Внесите изменения, соответствующие тексту программы 2.1. Строка в начале файла progl .m, которая начинается с двух слэшей (//), называется ком-ментарием; ниже мы поговорим о них более подробно.

Ваша программа в окне редактирования должна выглядеть следующим об-разом. // First program example #import int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Programming is fun!"); [pool drain]; return 0; }

Обратите внимание на цвета текста. Xcode выделяет разными цветами зна-чения, зарезервированные слова и т.д.

Теперь можно скомпилировать и выполнить программу. В терминологии Xcode эти этапы называются build and run (Сборка и выполнение). Сначала следует сохранить программу, выбрав пункт Save в меню File. Если попытаться ском-пилировать и выполнить программу без сохранения файла, Xcode спросит, хотите ли вы сохранить его.

В меню Build (Сборка) можно выбрать Build или Build and Run. Выберите второй вариант, поскольку программа, скомпилированная без ошибок, будет выполнена автоматически.

Можно также щелкнуть на значке Build and Go, который показан в панели инструментов.

Примечание. Build and Go означает «Выполнить сборку и затем запустить пос-леднюю операцию, которую я просил выполнить». Это может быть Run, Debug, Run with Shark or Instruments и т.д. При первом использовании для проекта Build and Go означает «собрать и выполнить программу» (Build and Run). Однако в дальнейшем «Build and Go» и «Build and Run» не всегда означают одно и то же.

Если в программе имеются ошибки, то на этом этапе вы увидите сообщение об ошибках. Вернитесь назад, исправьте ошибки и повторите процесс. После устранения всех ошибок появится окно progl – Debugger Console (Консоль отладчика). Это окно содержит выходные результаты программы (рис. 2.8). Если это окно не появляется автоматически, перейдите в линейку главного меню и выберите Console в меню Run. Содержимое окна Console будет описано ниже.

Рис. 2.8. Окно Xcode Debugger Console

Вы закончили процедурную часть компиляции и выполнения программы с помощью Xcode. Ниже приводится последовательность шагов для создания новой программы с помощью Xcode.

Запустите приложение Xcode.

Если это новый проект, выберите File, New Project.

Для типа приложения выберите Command Line Utility, Foundation Tool и щел-кните на кнопке Choose.

Выберите имя проекта и папку для сохранения в ней файлов проекта. Щел-кните на кнопке Save.

В верхней правой панели вы увидите файл progl.m (или то имя, которое вы назначили своему проекту, с расширением имени .т). Выделите этот файл. Введите текст программы в окне редактирования (edit), которое появится непосредственно под этой панелью.

Сохраните изменения, выбрав File, Save.

Запустите сборку и выполнение приложения, выбрав Build, Build and Run или щелкнув на кнопке Build and Go.

В случае ошибок при компиляции внесите в программу изменения и повторите шаги 6 и 7. Приложение Terminal

Если вы привыкли использовать оболочку UNIX и средства командной строки, то можете редактировать, компилировать и выполнять программы, используя приложение Terminal. Ниже описывается, как это делать.

Первый шаг – это запуск приложения Terminal на вашем Маке. Приложение Terminal находится в папке Applications внутри Utilities. На рис. 2.9 показан его значок.

Запустите приложение Terminal. Появится окно, аналогичное рис. 2.10.

Рис. 2.9. Значок программы Terminal

Команды вводятся в каждой строке после символа $ (или % – в зависимости от настройки вашего приложения Terminal). Это вполне понятно, если вы знакомы с использованием UNIX,

Сначала нужно ввести в файл строки из программы 2.1. Можно начать с со-здания папки, в которой будут сохраняться примеры ваших программ. Затем для ввода вашей программы нужно запустить текстовый редактор, например, vi или emacs. sh-2.05a$ mkdir Progs # Создание папки для сохранения программ sh-2.05a$ cd Progs # Переход в новую папку sh-2.05a$ vi progl.m # Запуск текстового редактора для ввода программы

Рис. 2.10. Окно Terminal

Примечание. В показанном примере и в остальной части книги команды, которые вводятся пользователем, выделены полужирным начертанием.

Для файлов Objective-C можно выбрать любое имя, но в конце имени должны стоять символы .т, которые указывают компилятору, что используется Objective-C.

Для файла с текстом программы можно выполнять компиляцию и сборку с помощью компилятора GNU Objective-C, который называется дсс. Команда дсс имеет следующий формат: gcc -framework Foundation файлы -о имя_программы

Опция -framework Foundation указывает, что используется информация о Foundation framework.

Эта опция должна быть указана в командной строке. Файлы – это список файлов для компиляции. В нашем примере такой файл только один (с именем progl.m). Имя_программы – это имя исполняемого файла, который будет создан, если файл скомпилируется без ошибок.

Эта программа называется prog 1. Ниже приводится командная строка для компиляции этой программы: $ gcc -framework Foundation progl .m -о progl # Компилировать progl.m и назвать ее prog 1 $

Возврат символа командной строки без каких-либо сообщений означает, что в программе не обнаружено ошибок. Вы можете выполнить такую программу, введя имя progl в командной строке: $ progl Выполнение progl sh: prog 1: command not found (команда не найдена) $

Вы можете получить этот результат, если раньше не использовали Terminal. Оболочка UNIX (то есть приложение, выполняющее вашу программу), «не зна-ет», где находится progl (мы не будем подробно объяснять это здесь). Есть два варианта решения этой проблемы. Первый – поставить перед именем программы символы ./, чтобы оболочка искала программу в текущей папке. Второй– добавить папку, в которой хранится ваша программа (или просто текущей папки), к переменной оболочки PATH. Мы используем первый способ: $ ./progl Выполнение progl 2008-06-08 18:48:44.210 progl [7985:10b] Programming is fun! $

Написание и отладка программ Objective-C из среды Terminal – вполне до-пустимый, но стратегически ошибочный подход. Приложения Mac OS X или iPhone – это не просто исполняемый файл, который должен быть «упакован» в пакет приложения. Создать такие приложения из приложения Terminal очень нелегко, в отличие от специализированной среды Xcode. Поэтому далее мы зай-мемся изучением Xcode как среды для разработки ваших программ. 2.2. Объяснение вашей первой программы

Познакомившись с компиляцией и выполнением программы Objective-C, рас-смотрим эту программу более подробно. Еще раз приведем ее текст. // First program example (Первый пример программы) #import int main (int arge, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Programming is fun!"); [pool drain]; return 0; }

В Objective-C прописные и строчные буквы различаются. Кроме того, для Objective-C не имеет значения, с какого места строки вы начинаете ввод: вводить символы можно с любой позиции строки. Это позволяет сделать программы более удобными для чтения.

В первой строке программы мы встречаем понятие комментария: // First program example

Комментарий используется для документирования программы и удобства ее чтения. Из комментариев читатель программы (программист или человек, поддерживающий программу) видит назначение и логику определенной про-граммы или последовательности операторов.

Комментарии можно вставлять в программу Objective-C двумя способами. Один из них – это использование двух последовательных слэшей (//). Компилятор игнорирует все символы после слэшей, вплоть до конца строки.

Комментарий можно также инициировать с помощью символов / и . Ком-ментарий начинается с символов / и завершается символами / с любым числом предшествующих пробелов. Все символы между открывающими / и зак-рывающими */ считаются частью комментария и игнорируются компилятором Objective-C. Эта форма комментария часто используется, если комментарий занимает несколько строк: /* Этот файл реализует класс с именем Fraction, который представляет дробные числа. Используются методы, которые позволяют работать с дробями, например, addition (сложение), subtraction (вычитание) и т.д. Более подробную информацию см. в документе: /usr/docs/classes/fractions.pdf */

Вы сами выбираете стиль комментариев. Вложенность комментариев в стиле /* не допускается.

Имеются три причины для того, чтобы вставлять комментарии в программу. Во-первых, намного проще документировать программу, когда вы еще держите в уме ее логику, чем восстанавливать ее логику после того, как программа завершена. Во-вторых, при вставке комментариев на ранних стадиях вы облег-чаете себе этап отладки, когда происходит выявление и отладка ошибок. Ком-ментарий не только помогает вам (и другим) в чтении программы, но и помогает выяснять путь к источнику логической ошибки. И последнее – я не встречал ни одного программиста, которому нравилось бы документирование программы, так что после окончания отладки программы вы вряд ли займетесь вставкой комментариев. Менее скучно – вставлять их при разработке программы.

В следующей строке программы 2.1 вы указываете компилятору, что нужно найти и обработать файл с именем Foundation.h: #import

Это системный файл. #import указывает, что нужно импортировать или включить в программу информацию из этого файла так, как если бы ввели ее в этом месте вручную. Импорт файла Foundation.h выполняется потому, что он содержит классы и функции, используемые в этой программе.

Следующая строка указывает, что программа имеет имя main: int main (int argc, const char *argv[])

Это специальное имя, которое указывает, где должно начаться выполнение программы. Зарезервированное слово int, которое поставлено перед main, ука-зывает тип значения, которое возвращает main – целое (более подробно об этом см. ниже). Между открывающей и закрывающей круглыми скобками находятся аргументы командной строки, которые мы будем рассматривать в главе 13.


    Ваша оценка произведения:

Популярные книги за неделю