Основная проблема, которая побеждает - заставить язык работать. Если не было библиотеки времени выполнения ObjC, никакая программа ObjC не могла бы работать.
Библиотека времени выполнения ObjC реализует отправку сообщений объектам, поиск реализаций методов из классов, получение данных классов и т. Д. Все это невозможно сделать во время компиляции, и, следовательно, она требует поддержки во время выполнения. Эта потребность в поддержке времени выполнения породила библиотеку времени выполнения ObjC.
Если это связано с Objective-C, есть вероятность, что за ним стоит библиотека времени выполнения.
Как в документации говорится,
Эта общая библиотека обеспечивает поддержку
для динамических свойств
Язык Objective-C, и как таковой
связан с всеми Objective-C
приложения.
Эта ссылка полезна в основном для
развивающиеся слои моста между
Objective-C и другие языки, или
для низкоуровневой отладки.
Возможно, вы захотите взглянуть на список функций. Некоторые, например objc_msgSend
, реализуют поведение, которое вы можете ошибочно воспринимать как должное. Например, звонок:
[foo bar:4];
фактически компилируется как:
objc_msgSend(foo, sel_getUid("bar:"), 4);
или что-то в этом роде.