2011-04-05 75 views
3

有關Mac OS X體系結構的一些常見問題。Mac OS X - Objective C運行時 - 什麼,哪裏,什麼時候?

我大概知道Objective C 2.0 Runtime的功能。 (例如類加載,消息調度等)

但是,我不知道運行時適用於從內核到單個進程的事物方案。

  • 我相信這是一個庫,但什麼樣的流程負責加載該庫和運行呢?

  • 在系統上的任何一次運行的運行時是否有一個實例?還是幾個? (是按進程嗎?)

  • 這種架構在iOS中基本上是相同的(就整體設計而言)?

謝謝。

回答

4

運行時代碼都在libobjc.A.dylib。它像一個正常的動態庫一樣工作,所以每個進程加載一次。

+0

謝謝! – SirRatty 2011-04-05 07:46:17

+1

我有一個關於你的答案的問題。我認爲,如果它是一個動態庫,它只會在內存中加載一次,然後在啓動時鏈接到每個應用程序中?我認爲每個進程每次都會加載靜態庫。 – GorillaPatch 2011-04-05 07:51:07

+0

@Gorilla:取決於「load」的含義。通過加載,我的意思是'dlopen',代碼被壓縮到內存中或被重用,並且初始化例程運行等等。 – kennytm 2011-04-05 08:35:15

相關問題