Re: Литература по Mac OS и iOS
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 09.07.11 12:36
Оценка: 64 (17)
Вместо вступления: все что я пишу ниже стоит рассматривать в контексте разработки для Mac OS X, опыта написания под iOS у меня практически нет

С литературой дела, на мой взгляд, обстоят довольно хреново. Т.е. нет ни одного автора, которого можно было бы поставить в один ряд с Русиновичем или Рихтером. А уж про "печатное и на русском" я вообще молчу. Тем не менее, кое что есть.
Данную литературу я бы разделил на 2 части:
  1. Драйвера и системные приложения.
  2. GUI приложения для конечного пользователя.
Теперь немного моих соображений на тему что читать и в какой последовательности. Во-первых, необходимо понять с чем же ты имеешь дело, для этого великолепно подходит документ Mac OS X Technology Overview. Этот документ, как минимум нужно бегло просмотреть, в дальнейшем это сэкономит кучу времени. После того как становится понятно, с чем же ты связался, можно переходить к конкретике.
Драйвера и системные приложения
Тут с литературой совсем плохо. Единственная доступная книга, которую можно использовать как более-менее сносный справочник это Mac OS X Internals — A Systems Approach. Стиль написания отвратительный, дико нудно, но информация очень полезная. Так же имеется ряд документов от Apple, которые посвящены той или иной технологии:
  1. Введение в драйвера. Что такое kext, с чем его едят, как сделать простейший.
  2. Беглый обзор внутреннего устройства Mac OS X.
  3. При разработке драйверов, часто используется библиотека I/O Kit. Введение в работу с этой библиотекой.
  4. Верхнеуровневый обзор написания драйверов для различных устройств.
Кроме того, я очень рекомендую скачать исходные коды XNU (ядро Mac OS X) и переодически в них заглядывать, т.к. документация от Apple содержит большой количество ошибок, особенное если речь заходит о каких-то форматах и структурах данных. Актуальная версия XNU на момент написания этой зметки тут.
Так как XNU состоит из 2-х частей: BSD и Mach, то для понимания его работы стоит ознакомится с Mach 3 Kernel Principles и книгой UNIX изнутри.
Теперь чуть выше, что читать по системным приложениям:
  1. Руководство по демонологии (для Mac OS X не принято писать классические UNIX демоны).
  2. Межпорцессное взаимодействие: довольно простой и быстрый способ с использованием CoreFoundation и более сложный, но иногда полезный способ основанный на Mach сообщениях (тынц и тынц.
  3. MachO формат бинарных файлов, содержащий сразу несколько версий исполнимого кода, несколько не привычен, рекомендую понять что это и почему.
  4. Одним из ключевых нововведений в Mac OS X 10.6 был Grand Central Dispatch
, технология крайне полезная в разработке и позволяет избежать построения очередного велосипеда.
GUI приложения для конечного пользователя
GUI приложения под Mac OS X можно и нужно писать с использованием Objective-C и Cocoa. Наверное единственное исключение не выглядящее как УГ это Parallels Desktop, но с него пример все же лучше не брать. Писать с использованием Objective-C и Cocoa просто, я бы даже сказал что очень просто. Для начала полный обзор того, что желательно прочесть, потом "экспресс курс"
  1. Начинаем с чтения введения в Objective-C.
  2. Дальше делаем акцент на управление памятью в Objective-C. На мой взгляд это наиболее запутанный вопрос.
  3. Краем глаза стоит посмотреть информацию про блоки, хотя бы чтоб не удивляться им, если в годе встретите.
  4. Обязательно внимательно читаем про крайне важные фичи Cocoa и Objective-C: Key-Value Observing, Key-Value Coding и Cocoa Bindings.
Тоже самое, но в виде экспресс курса:
  1. Введение в Objective-C на Wikipedia на редкость хорошее.
  2. Отностиельно биндингов я делал небольшую выжимку, когда сам с ними разбирался.
  3. Тоже самое можно сказать и про управление памятью.
Для начала этой информации будет 100% достаточно, а если понадобится копнуть более глубоко — всегда есть "полный курс"
На документацию по Cocoa я не буду приводить каких-то конкретных ссылок, т.к. это была бы мешаниниа из разнотипных документов по разным контролам.
В качестве "исходников для изучения" я могу порекомендовать Tasks Explorer. Он обладает относительно сложным интерфейсом, и из него можно получить ответ на следующие вопросы:
Все эти вопросы я довольно основательно гуглил, а тут, все в одном месте
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.