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