WebKit の構造

WebKit の構造

前のページでは、WebView というクラスを使ったけど、ここではWebView の構 造をもう少し詳しく見てみよう。ここでは、WebView、WebFrameView、 WebFrame という3 つのクラスを紹介するよ。


4.1 WebView


WebView は、WebKit を使う上で中心となるクラスだ。名前から推測できるようにNSView を継承している。


webView.jpg
図4-1 WebView クラス階層

自分のアプリケーションでHTML を表示するには、このWebView を貼付ければい いんだ。1 つのWebView が、1 枚のHTML 画像に相当する。タブブラウザとかを作 るときは、WebView をいくつか作ることになるんだろうね。


4.2 WebFrameView

それに対して、HTML 画像の中でそれぞれのフレームに対応するのが WebFrameView だ。これもNSView を継承している。


webFrameView.jpg
図4-2 WebFrameView クラス階層

このクラスは、まず、フレームが使われていようがいまいが、WebView の中に1 つ用意される。つまり、WebView は必ず1 つのWebFrameView を持つんだ。そし てフレームが存在するときは、WebFrameView の中に、子となるWebFrameView が作られるんだ。WebFrameView の階層構造になるということ。

このWebFrameView の階層は、WebView がデータを読み込むときに自動的に作ら れるんだ。プログラマが気にする必要はない。

4.3 WebFrame

WebFrame は、WebFrameView に表示されるデータを取り扱うためのクラスだ。 これは、NSObject を継承している。


webFrame.jpg
図4-3 WebFrame クラス階層

WebFrame はWebFrameView ごとに作られるんだ。だから、WebFrame も同じ ように階層を持つことになる。実際のところ、HTML データを読み込むときは WebFrame に対してURL やデータを指定してやるんだ。

4.4 3 つのクラスの関係

この3 つのクラスとHTML のフレームの関係は、次のようになるんだ。WebKit の ドキュメントである「Displaying Web Content」から引用してみた。

ui_objc_diagram.gif
図4-4 3 つのクラスの関係

Model-View-Control アーキテクチャの言葉を借りれば、WebView と WebFrameView がView になって、WebFrame がModel になるんだね。