Использование Objective-C Runtime Library - PullRequest
2 голосов
/ 27 апреля 2011

Какие именно проблемы могут быть решены с помощью библиотеки времени выполнения в target-c?Я не вижу практического использования для библиотеки времени выполнения o_o

Ответы [ 2 ]

8 голосов
/ 27 апреля 2011

Основная проблема, которая побеждает - заставить язык работать. Если не было библиотеки времени выполнения ObjC, никакая программа ObjC не могла бы работать.

Библиотека времени выполнения ObjC реализует отправку сообщений объектам, поиск реализаций методов из классов, получение данных классов и т. Д. Все это невозможно сделать во время компиляции, и, следовательно, она требует поддержки во время выполнения. Эта потребность в поддержке времени выполнения породила библиотеку времени выполнения ObjC.

Если это связано с Objective-C, есть вероятность, что за ним стоит библиотека времени выполнения.

Как в документации говорится,

Эта общая библиотека обеспечивает поддержку для динамических свойств Язык Objective-C, и как таковой связан с всеми Objective-C приложения.

Эта ссылка полезна в основном для развивающиеся слои моста между Objective-C и другие языки, или для низкоуровневой отладки.

Возможно, вы захотите взглянуть на список функций. Некоторые, например objc_msgSend, реализуют поведение, которое вы можете ошибочно воспринимать как должное. Например, звонок:

[foo bar:4];

фактически компилируется как:

objc_msgSend(foo, sel_getUid("bar:"), 4);

или что-то в этом роде.

4 голосов
/ 27 апреля 2011

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

...