Objective-C のヘッダファイルって何で要るの?を調べてみた

最近 iOS アプリを開発していて、普段書くのは Swift だが、Objective-C のコードを読むことも多い。

そんな中、Objective-C は拡張子 .h のヘッダファイルと、.m のメインファイル (実装ファイル) を作らされることが解せず、何でこんなモノが要るのか調べてみた。

.h.m というファイルは C 言語の「プロトタイプ宣言」という仕組みの名残らしい。例えば、main 関数から他のメソッドを呼ぶ時、そのメソッドの宣言が main 関数より後にかかれていると、プログラムは「そんな関数ないよ」と困ってしまう。そこで、ヘッダファイルでその関数の存在を知らせておくことで、main 関数の前後どちらに対象のメソッド書いたとしても解釈できるようにする、という仕組みのようだ。

今ほどリソースが潤沢ではない時代に考えられた仕組みなので、ヘッダファイルは別ファイルに切り出されていて、その仕組みがそのまま残っているから、というのが理由なようだ。