1 Основы Objective-C. Краткое описание языка C


Среда Сосоа предоставляет важные базовые классы и добавляет такие лингвистические и архитектурные устройства, как категории, протоколы, делегирование и оповещения.

Вопросы управления памятью.


В среде Xcode 5 механизм ARC просто включен по умолчанию.


Такие нововведения, как модули и автоматическое связывание, каталоги ресурсов и различные панели настроек, сделают вашу работу гораздо более комфортной.


Документация в большей степени представляет собой справочник, чем учебник. Как бы хорошо ни был прокомментирован какой-то пример приложения, в нем не так легко разобраться: он демонстрирует, но не учит.


Objective-C является надмножеством языка программирования С. Это означает, что Objective-C
включает в себя С; все, что верно для С, верно и для Objective-C.

Часть интерфейса API системы  iOS основана на С, а не на Objective-C. Даже при кодировании
на Objective-C часто требуется использовать структуры данных и вызовы функций С. Например, прямоугольник представлен в виде структуры С CGRect, а для создания объекта CGRect из четырех чисел следует вызвать функцию С CGRectMake.





Язык программирования С - строго типизированный.

Объявленная, но явно не инициализированная переменная имеет неопределенное значение (и должна рассматриваться как источник опасностей, пока она не инициализирована).

В книге K&R объявления С должны предшествовать всем прочим инструкциям, но в современных версиях С это правило ослаблено, так что вы не обязаны объявлять переменную до самого начала ее использования:
int height = 2;
int width = height * 2; height = height + 1; int area = height * width;






Строка кажется фундаментальным текстовым типом в С, но на самом деле это иллюзия; за
кулисами она выглядит как массив элементов типа char, завершающийся нулевым символом.

Objective-C позволяет записывать литералы NSString способом, очень похожим на строковый литерал С:
@"string"

Обратите внимание на символ @! Это выражение в действительности представляет собой
директиву компилятору Objective-C о том, что надо создать объект класса NSString.




int *intPtr;

Не имеет значения, сколько пробелов вы добавите, - имя типа будет int*. Если вы спросите, какому типу данных принадлежит переменная intPtr, ответом будет int* (указатель на int); звездочка в данном случае является частью имени типа этой переменной.

Однако если в одном объявлении вы указываете несколько указателей, то звездочка должна находиться перед каждым именем переменной. Так, в объявлении int *ptr1, *ptr2; переменные ptr1 и ptr2 имеют тип данных int*, но в объявлении int* ptr1, ptr2; переменная ptr1 представляет собой указатель на int, а ptr2 - переменную типа int.



Можно также инициализировать массив во время объявления, присваивая ему список
значений в фигурных скобках, так же, как и в случае структуры. В таком случае размер массива
в объявлении можно опустить, так как неявно он указывается списком значений инициализации:
int arr[] = {123, 456, 789};

Интересно, что имя массива является также именем указателя на первый элемент массива.
Таким образом, например, имея показанное выше объявление массива, можно использовать
arr там, где ожидается значение типа int* (указатель на int).