読み込まれたすべてのクラスに関する情報が起動時に収集されることはわかっています。しかし、それがどのように行われるか、Objective-C スタートアップ ルーチンがプレーンな C プログラムのスタートアップ ルーチンと比較してどのように見えるかについての情報は見つかりませんでした。
この時点から、Objective-C に何が追加されたのか気になります。Objective-C のプログラムは、C のプログラムに何らかの追加を加えたものですか、それとも構造がまったく異なるものですか?
読み込まれたすべてのクラスに関する情報が起動時に収集されることはわかっています。しかし、それがどのように行われるか、Objective-C スタートアップ ルーチンがプレーンな C プログラムのスタートアップ ルーチンと比較してどのように見えるかについての情報は見つかりませんでした。
この時点から、Objective-C に何が追加されたのか気になります。Objective-C のプログラムは、C のプログラムに何らかの追加を加えたものですか、それとも構造がまったく異なるものですか?
Cocoa with Love の記事http://cocoawithlove.com/2008/03/cocoa-application-startup.htmlを参照してください。概要がよくわかります。
ただし、何が起こっているのかを本当に知りたい場合は、少し掘り下げることになりますが、http://opensource.apple.com/でランタイムのソースを見ることができます。関心のある OS 内の objc4* プロジェクトを探しますobjcrt.c
。初期化チェーンの最上部を探します。
元の投稿で 2 つの個別の質問をしました: スタートアップ ルーチンがどのように見えるか (ランタイムで説明されています) と「Objective-C プログラムは C プログラムにいくつかの追加が加えられていますか?」。後者の答えはイエスです。これは、C++ と同じように、いくつか追加された C プログラムです。また、C++ と同様に、ランタイムにかなり重要な追加機能がいくつか含まれています。