Статическая vs динамическая библиотека?
Суть
- Статическая (
.a, static framework) — объектный код копируется в бинарь приложения на этапе линковки. Запуск быстрее (dyld не грузит лишних образов), мёртвый код вырезается линкером, но бинарь растёт, а одна и та же библиотека, слинкованная в несколько динамических фреймворков, даёт дубли символов и предупреждениеClass X is implemented in both…. - Динамическая (
.dylib, dynamic.framework) — отдельный образ Mach-O, который dyld загружает при запуске (или лениво черезdlopen). Код и ресурсы можно разделять между приложением и его extensions (один фреймворк в бандле, ссылки из нескольких таргетов), но каждый встроенный фреймворк — это работа dyld на старте: десятки динамических фреймворков заметно замедляют pre-main.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep