Objective-C

Objective-C логотип

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

Объектно-ориентированное программирование

Smalltalk полностью поддерживает объектно-ориентированное программирование, включая четыре столпа объектно-ориентированной разработки.

  • Инкапсуляция.
  • Сокрытие данных.
  • Наследование.
  • Полиморфизм.

Пример кода

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   NSLog (@"hello world");
   [pool drain];
   return 0;
}

Foundation Framework

Foundation Framework предоставляет большой набор возможностей, которые перечислены ниже.

  • Он включает список расширенных типов данных, таких как NSArray, NSDictionary, NSSet и т.д.
  • Он состоит из богатого набора функций, манипулирующих файлами, строками и т.д.
  • Он предоставляет функции для работы с URL, утилиты, такие как форматирование даты, обработка данных, обработка ошибок и т.д.

С первого взгляда

Этот документ знакомит с языком Objective-C и предлагает обширные примеры его использования. Вы узнаете, как создавать свои собственные классы, описывающие пользовательские объекты, и увидите, как работать с некоторыми классами фреймворка, предоставляемыми Cocoa и Cocoa Touch. Хотя классы фреймворка отделены от языка, их использование тесно связано с кодированием на Objective-C, и многие функции языка опираются на поведение, предлагаемое этими классами.

Приложение строится из сети объектов

При создании приложений для OS X или iOS вы будете проводить большую часть времени, работая с объектами. Эти объекты являются экземплярами классов Objective-C, некоторые из которых предоставляются вам Cocoa или Cocoa Touch, а некоторые вы пишете сами.

Если вы пишете свой собственный класс, начните с описания класса, в котором подробно описывается предполагаемый общедоступный интерфейс для экземпляров класса. Этот интерфейс включает публичные свойства для инкапсуляции соответствующих данных, а также список методов. Объявления методов указывают на сообщения, которые может получать объект, и включают информацию о параметрах, требуемых при вызове метода. Вы также предоставите реализацию класса, которая включает исполняемый код для каждого метода, объявленного в интерфейсе.

Категории расширяют существующие классы

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

Если у вас есть исходный код класса, вы можете использовать расширение класса для добавления новых свойств или изменения атрибутов существующих свойств. Расширения классов обычно используются для скрытия частного поведения для использования либо в рамках одного файла исходного кода, либо в рамках частной реализации пользовательского фреймворка.

Протоколы определяют контракты обмена сообщениями

Большая часть работы в приложении Objective-C происходит в результате отправки объектами сообщений друг другу. Часто эти сообщения определяются методами, объявленными в явном виде в интерфейсе класса. Иногда, однако, полезно иметь возможность определить набор связанных методов, которые не привязаны непосредственно к конкретному классу.

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

Значения и коллекции часто представляются как объекты Objective-C

В Objective-C принято использовать классы Cocoa или Cocoa Touch для представления значений. Класс NSString используется для строк символов, класс NSNumber для различных типов чисел, таких как целые числа или числа с плавающей точкой, а класс NSValue для других значений, таких как структуры C. Вы также можете использовать любой из примитивных типов, определенных языком Си, например, int, float или char.

Коллекции обычно представлены в виде экземпляров одного из классов коллекций, таких как NSArray, NSSet или NSDictionary, которые используются для сбора других объектов Objective-C.

Блоки упрощают выполнение общих задач

Блоки - это языковая функция, введенная в C, Objective-C и C++ для представления единицы работы; они инкапсулируют блок кода вместе с захваченным состоянием, что делает их похожими на закрытия в других языках программирования. Блоки часто используются для упрощения таких распространенных задач, как перечисление коллекций, сортировка и тестирование. Они также облегчают планирование задач для параллельного или асинхронного выполнения с помощью таких технологий, как Grand Central Dispatch (GCD).

Объекты ошибок используются для решения проблем во время выполнения программы

Хотя Objective-C включает синтаксис для обработки исключений, Cocoa и Cocoa Touch используют исключения только для ошибок программирования (таких как выход за границы массива), которые должны быть исправлены до отправки приложения.

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

Код Objective-C следует установленным соглашениям

При написании кода Objective-C следует помнить о ряде установленных правил кодирования. Например, имена методов начинаются со строчной буквы, а для многозначных слов используется верблюжий регистр; например, doSomething или doSomethingElse. Однако важна не только капитализация; вы также должны следить за тем, чтобы ваш код был максимально читабельным, а это значит, что имена методов должны быть выразительными, но не слишком многословными.

Кроме того, есть несколько соглашений, которые необходимы, если вы хотите воспользоваться преимуществами языка или возможностей фреймворка. Методы доступа к свойствам, например, должны следовать строгим соглашениям об именах, чтобы работать с такими технологиями, как Key-Value Coding (KVC) или Key-Value Observing (KVO).

Предварительные условия

Если вы новичок в разработке приложений для OS X или iOS, то перед прочтением этого документа вам следует ознакомиться с книгой Start Developing iOS Apps Today (Retired) или Start Developing Mac Apps Today, чтобы получить общее представление о процессе разработки приложений для iOS и OS X. Кроме того, вам следует ознакомиться с Xcode, прежде чем пытаться выполнять упражнения в конце большинства глав этого документа. Xcode - это IDE, используемая для создания приложений для iOS и OS X; вы будете использовать ее для написания кода, проектирования пользовательского интерфейса приложения, тестирования приложения и отладки любых проблем.

Хотя предпочтительно иметь некоторое знакомство с языком C или одним из языков на его основе, таких как Java или C#, этот документ содержит встроенные примеры основных возможностей языка C, таких как операторы управления потоком. Если вы знаете другой язык программирования более высокого уровня, такой как Ruby или Python, вы сможете следовать его содержанию.

Разумно освещены общие принципы объектно-ориентированного программирования, особенно в контексте Objective-C, но предполагается, что вы хотя бы минимально знакомы с основными объектно-ориентированными концепциями.

Использование Objective-C

Objective-C, как упоминалось ранее, используется в iOS и Mac OS X. У него большая база пользователей iOS и значительно увеличивающаяся база пользователей Mac OS X. А поскольку Apple в первую очередь уделяет внимание качеству, это замечательно для тех, кто начал изучать Objective-C.

Источники