Чтение онлайн

ЖАНРЫ

Программирование на Objective-C 2.0
Шрифт:

Приложение В. Сводка языка Objective-C

В этом приложении содержится краткий справочник по языку Objective-C в удобном формате. Эта не полный справочник, а скорее неформальное описание средств языка. Тщательно проработайте этот материал после того, как закончите работу с основным текстом книги. Это позволит вам не только закрепить изученный материал, но и лучше понять возможности Objective-C.

Описание основывается на стандарте ANSI С99 (ISO/IEC 9899:1999) с рас-ширениями языка Objective-C. На момент написания этой книги в моей системе Mac OS X vl0.5.5 последняя версия компилятора GNU gcc имела номер 4.0.1. Диграфы и идентификаторы Символы-диграфы

Следующие двухсимвольные последовательности (диграфы) эквивалентны указанным односимвольным пунктуаторам. Диграф Значение <: [ :> ] <% { %> } %: # %:%: ## Идентификаторы

Идентификатор

в Objectivc-C состоит из последовательности букв (прописных и строчных), имен универсальных символов (см. ниже), цифр и знака подчеркивания. Первый символ идентификатора должен быть буквой, знаком подчеркивания или именем универсального символа. Первые 31 символов идентификатора обязательно будут значащими для внешнего имени, первые 63 символа обязательно будут значащими для внутреннею имени или имени макроса. Имена универсальных символов

Имя универсального символа состоит из символов \и, мосле которых следуют четыре шестнадцатеричных числа, или из символов \U, после которых следуют восемь шестнадцатеричных чисел. Если первый символ идентификатора указан универсальным символом, его значение не может быть символом цифры. Универсальные символы при использовании в именах идентификаторов не могут указывать символ, значение которого меньше А0,6 (в отличие от 241б,401б или 60|6), или символ в диапазоне от D800l6 до DFFF|6 включительно.

Имена универсальных символов можно использовать в именах идентификаторов, символьных константах и символьных строках. Ключевые слова

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

_Bool

_Complex

Jmaginary

auto

break

bycopy

byret

case

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

in

inline

inout

int

long

oneway

out register

restrict

return

self

short

signed

sizeof

static

struct

super

switch

typedef

union

unsigned

void

volatile

while Директивы

Директивы компилятора начинаются со знака @ и используются особым образом для работы с классами и обработками, см. таблицу В. I.

Табл. В.1. Директивы компилятора Директива Описание Пример @"символы" Определяет константный строковый объект типа NSSTRING. (Дня смежных строк выполняется конкатенация.) NSString *url = @"http://www.kochan-wood.com"; @class с1, с2,... Объявляет c1 , с2 ,... как классы. @class Point, Rectangle; @defs (класс) Возвращает список структурных переменных для класса. struct Fract {@defs( Fraction);} *fractPtr; fractPtr = (struct Fract *) [[Fraction alloc] init]; @dynamic имена Методы доступа для имен могут предоставляться динамически. @dynamic drawRect; @encode (тип) Строковое кодирование для типа. @encode (int *) @end Заканчивает секцию interface, секцию implementation или секцию протокола. @end @implementation Начинает секцию implementation, @implementation Fraction @interface Начинает секцию interface. @interface Fraction: NSObject <Copying> @private Определяет область действия одной или нескольких переменных экземпляра. См. «Переменные экземпляра» @protected Определяет область действия одной или нескольких переменных экземпляра. @public Определяет область действия одной или нескольких переменных экземпляра. @property (список) имена Объявляет свойства в списке для имен. @property (retain, nonatomic) NSSTHING *name; @protocol Создает объект типа Protocol для указанного протокола. @protocol (Copying)]){...} if ([myObj conformsTo: (protocol) @protocol имя Начинает определение протокола для имени. @protocol Copying @selector (метод) Объект типа SEL для указанного метода. if ([myObj respondsTo: @selector(allocF)]) (...) @synchronized (объект) Начинает блок, который должен выполняться одним потоком. Объект называется взаимоисключающим (mutually exclusive, mutex) семафором. @synthesize

имена Генерирует методы доступа для имен, если они не заданы. @synthesize name, email; См. также «Переменные экземпляра» @try Начинает блок для улавливания исключительных ситуаций (исключений). См. «Обработка исключительных ситуаций» @catch (исключение) Начинает блок для обработки исключения. @finally Начинает блок, который выполняется в предположении, что предыдущем блоке @try было «инициировано» (throw) исключение. @throw Инициирует исключение. Предопределенные идентификаторы

В таблице В.2 приводится список идентификаторов, которые имеют специальный смысл в программах на Objective-C.

Табл. В.2. Специальные предопределенные идентификаторы Идентификатор Описание _cmd Локальная переменная, автоматически определяемая в методе, который содержит селектор для этого метода. func Локальная символьная строковая переменная, автоматически определяемая в функции или в методе; содержит имя функции или метода. BOOL Булева переменная, обычно со значениями YES и NO. Class Тип объекта-класса. id Обобщенный тип объекта. IMP Указатель на метод, возвращающий значение типа id. nil Пустой объект. Nil Пустой объект-класс. NO Определяется как (BOOL) 0 NSObject Корневой объект Foundation, определенный в < Foundation/NSObject.h>. Protocol Имя класса для хранения информации о протоколах. SEL Откомпилированный селектор. self Локальная переменная, автоматически определяемая в методе, которая обозначает получателя сообщения. super Родительский объект получателя сообщения. YES Определяется как (BOOL) 1. Комментарии

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

Комментарий может также начинаться с символов / и заканчиваться символами /• К такой комментарий можно включать любые символы, и он может занимать несколько строк. Комментарий можно использовать в любом месте программы, если для этого есть место. Однако комментарии не допускают вложенности. Это означает, что комментарий всегда заканчивается символами /, даже если до этого встретилось несколько наборов символов /. Константы Константы целого типа

Константа целого типа (целая константа) - это состоящая из цифр последова-тельность, перед которой может дополнительно ставиться знак «плюс» или «минус». Если первой цифрой является 0, значит, это восьмеричная константа, и тогда следующие цифры должны быть в диапазоне 0-7. Если первой цифрой является О, и сразу после нее следует буква х (или X), значит, это шестнадцатеричная константа, и последующие цифры должны быть в диапазоне 0-9, a-f (или A-F).

В конце десятичной целой константы можно добавить суффикс I или L, и тогда она становится константой типа long int, если умещается в этот размер, иначе она интерпретируется как long long int. И, наконец, если она не умещается в long long int, она и нтерп ретируется как константа типа unsigned long long int.

В конце десятичной целой константы можно добавить суффикс II или LL, чтобы сделать ее long long int. При добавлении этого суффикса в конец восьмеричной или шестнадцатеричной константы, она интерпретируется сначала как long long int, но если не умещается в этот размер, то получает тип unsigned long long int.

В конце целой константы можно добавить суффикс и ИЛИ U, чтобы сделать ее константой без знака (unsigned). Если она не умещается в размер unsigned int, она интерпретируется как unsigned tong int. Если она превышает также этот размер, то интерпретируется как unsigned tong tong int.

Два суффикса — для unsigned и для tong — можно добавить к целой константе, чтобы она имела тип unsigned tong int. Если константа не умещается в этот тип, она обрабатывается как unsigned long long int.

Два суффикса - для unsigned и для tong long - можно добавить к целой кон-станте, чтобы она имела тип unsigned tong tong int.

Если десятичная целая константа без суффиксов слишком велика, чтобы уместиться в тип signed int, она интерпретируется как long int. Если она слишком велика, чтобы уместиться в тип long int, она интерпретируется как long long int.

Поделиться с друзьями: