コース: Objective-C 基本講座

iOSアプリにおける主要なオブジェクトの構成を理解する - Objective-Cのチュートリアル

コース: Objective-C 基本講座

iOSアプリにおける主要なオブジェクトの構成を理解する

このレッスンではUI キットフレームワーク を使って作られたIOS アプリが どんなオブジェクトで構成されて どう連携されているのか学習してください ObjectiveC では コマンドラインツールを作る場合でも IOS アプリを作る場合でもOS から 起動されるとmain 関数が呼び出される ことに変わりはありません ふるまいの違いは main 関数内から呼ばれる UIapplication main 関数 内で発生します まずこの中で UIApplication インスタンスが 1 つ作成されます そして第4 引数で指定されたクラス名の インスタンスが1 つ作成されます ここではAppDeligate が 作成されることになりますが これはテンプレートが用意した Appdeligate.m と h で定義されているクラスです このAppDeligate は UIApplicationDeligate プロトコルを採用しているオブジェクトです そしてUIApplication は AppDelegationのことを UIApplication Deligation プロトコル 採用しているオブジェクトとして Deligate プロパティに登録し以後 Deligatenデザインパターンで 連携していきます これでAppDeligate にはアプリが 起動したとかアプリを停止するといった 内容のメッセージが UIApplication から 送られてくることになります プロジェクトの設定によっては 起動したというメッセージに合わせて AppDeligate が UIWindow を作り画面を表示する 準備をする必要があります UIWindow はiPhone の 画面表示を担当するオブジェクトです AppDeligate はこれに加え ViewController を1 つ 作成しUIWindow の rootViewController プロパティに設定します ViewController は テンプレートが用意した viewcontroler.m と h でUIViewController の 派生クラスとして定義されているオブジェクト でUIWindow からは UIViewController として 扱われます 以上の作業は 今回UIApplication 側が 行うように設定されています そのためUIApplication は 指定された main.streeboard という ファイルを読み込みファイルの記述に従って UIWindow ViewController を作成し 設定します どちらが行うにせよアプリ起動直後は このようなオブジェクト文の関係ができあがり この後すぐUIWindow は自分の rootViewController に 設定されている ViewController の ビュープロパティからUIView インスタンスを取り出そうとします UIView インスタンスも UIWindow 同様 iPhone の画面表示を 担当するオブジェクトです ViewContoller は このオブジェクトを1 つ管理しています そして取り出されたUIView が 担当する画面はUIWindow が 担当する画面の子画面として貼り付けられ 画面いっぱいに表示されます これがシングルビューアプリケーション テンプレートプロジェクトで作った アプリが表示する白い画面です このようにしてUIWindow の 担当画面上で画面の切り替えを行い多種多様な 機能を提供するのがIOS アプリです UIView も自身の担当画面に 別の複数のUIView の担当画面を 子画面として貼り付けられます そもそもUIWindow が UIView の派生クラスであり UIView のこの特性を使って 画面を貼り付けています そしてこれらの画面から タッチなどを感知してふるまいを決めるのが ViewContoller です ここではUIキットフレームワークをつかって 作られたIOSアプリが どんなオブジェクトで構成されて どう連携しているのかを学習しました

目次