0

ランタイム システムは、Objective-C の動的な性質を有効にした動的ライブラリです。私の質問は、このランタイム システムを実行しているのは誰ですか? 常に OS と一緒に動作しますか?

4

1 に答える 1

1

ランタイム システムは、デーモンか、常にランタイム関連の処理を実行する何かのように聞こえます。

そうではありません。これは、イントロスペクション、クラスの実現、および最も一般的に使用されるメソッド呼び出しなどを実装するための呼び出しをコンパイラが生成する、アプリケーションにリンクされた単なる一連のユーティリティ ルーチンです。

すべての Objective-C アプリケーションには独自のランタイムがあり、すべてのアプリケーションは独自の分離されたメモリ空間で実行され、他のアプリケーションのメモリにアクセスすることはできません。

つまり、Objective-C ランタイムは完全に受動的です。それを呼び出すコードが実行されない限り、何もしません (GC スレッドがランタイムと共謀してメモリをクリーンアップするため、ObjC が GC 環境で実行されている場合は例外です)。

ほとんどの高水準言語には、ある種のランタイム システムがあります。Cでも(crt0を調べて)。

于 2013-09-07T18:23:55.643 に答える