Вы вызываете код библиотеки, а код Framework вызывает ваш код.
Я выполнял ряд проектов xcode, которые требовали добавления внешних фреймворков и библиотек.
При их установке всегда был один общий случай, они всегда просили меня перейти на вкладку «Фазы сборки» и «связать двоичный файл с библиотеками».

Мой вопрос: почему и фреймворки, и библиотеки связываются таким образом? Я (думаю) понимаю, почему это делает библиотека. Для библиотек они не могут выполняться сами по себе, поэтому вы предварительно компилируете их и делаете их функции доступными для ваших классов.
Что касается фреймворка, мне гораздо менее ясно, что здесь происходит. Если фреймворк вызывает мой код, почему он предварительно компилируется как двоичный? Если он выполняет мой код во время выполнения, должен ли он просто компилироваться вместе со сборкой?