Среда Сосоа предоставляет важные базовые классы и добавляет такие лингвистические и архитектурные устройства, как категории, протоколы, делегирование и оповещения.
Вопросы управления памятью.
Шаблоны Кey-Value Coding и Кey-Value Observing.
В среде Xcode 5 механизм ARC просто включен по умолчанию.
Такие нововведения, как модули и автоматическое связывание, каталоги ресурсов и различные панели настроек, сделают вашу работу гораздо более комфортной.
Документация в большей степени представляет собой справочник, чем учебник. Как бы хорошо ни был прокомментирован какой-то пример приложения, в нем не так легко разобраться: он демонстрирует, но не учит.
включает в себя С; все, что верно для С, верно и для 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).