@Xazzzi
Творю for fun and profit!

Как (и возможно ли в принцыпе) копнуть Objective-C фреймворки глубже заголовочных файлов?

Интересуюсь разработкой под IOS, но пока не совсем могу понять логику работы основных фреймворков.

Пытаюсь отследить жизненный цикл приложения от входа в функцию main до didFinishLaunchingWithOptions, изучаю заголовочные файлы. Однако, не понятно, к примеру, где именно устанавливается главная петля обработки событий, в какой точке подключается ViewController, и множество других мелких моментов. Мне бы очень помогли исходные коды (но как я понимаю, врятли они есть в открытом доступе, или я не прав?) или хорошая свежая литература, затрагивающая эти вопросы.

Если у вас есть чем поделиться — прошу публиковать ссылки. Всем заранее спасибо.
  • Вопрос задан
  • 3423 просмотра
Решения вопроса 1
@macbuka
Жизненный цикл приложения от входа в функцию main() до -didFinishLaunchingWithOptions: меняется от системы к системе. Именно поэтому важно полагаться только на ту информацию, которая публично доступна в документации от Apple — они оставляют за собой право тихонечко менять все, что не описано ими. Это касается не только этого аспекта, но и всего поведения системы.

Вы можете поисследовать, попереопределять методы (рантайм позволяет в этом смысле практически все, что угодно), посидеть в отладчике, это интересно в конце концов. Но если вы будете полагаться на результаты ваших исследований, а не на документированное поведение, ваш продукт с выходом новой системы может перестать работать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
bobermaniac
@bobermaniac
Цыган на цыпочках подошел к цыпленку и цыкнул: «цыц»!

Если вас интересует недокументированное API — ищите Objective C private API.

Давным-давно в книжном я наталкивался на книгу с названием вроде «Objective C. Разработка приложений с открытым исходным кодом». Возможно, она бы вам помогла.

Что касается кишков — рекомендую читать документацию, она глубже, чем кажется.
Ответ написан
@Limosha
Почитайте про RunLoop.

А если нужны внутренности: для любого фреймворка можно узнать какие в нем есть классы (даже если private API). Для этого читайте objective-c runtime.
Ответ написан
SychevIgor
@SychevIgor
или дизассмблер вам в помощь. это конечно долго но найти в коде можно
Ответ написан
deleted-mifki
@deleted-mifki
Сложно вас конкретно к чему-то отослать, не зная точно, что именно вас и для чего (с какой подробностью) интересует.

Но хочу напомнить, что существуют две открытые реализации Cocoa — GNUStep и Cocotron. В их исходниках можно найти много ответов и вообще полезного. Это, конечно не скажет, что именно так оно сделано у эппла, но общую логику работы и как оно может быть реализовано будет видно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
AdCombo Санкт-Петербург
от 120 000 до 200 000 ₽
Азбука Вкуса Самара
от 80 000 до 110 000 ₽
FunCorp Москва
от 200 000 ₽
02 дек. 2020, в 10:07
10000 руб./за проект
02 дек. 2020, в 09:07
1400 руб./за проект