For Want Of A Better Word

【Objective-C】ファイル構成-実行の流れ

      2015/04/19

(1)main.mの実行

  • UIAplicationオブジェクトの作成
    • Cocoaで作るiosアプリはすべてUIAplicationインスタンスを持っていないとだめ。
  • 4つ目の引数がnil(*)になっているので、UIApplicationMainは アプリケーションデリゲートオブジェクトをメインnibファイルからロードする。

(2)-info.plist

  • メインのnibファイルは何かというと、「プロジェクト名-info.plist>main_nib_file_base_name」に定義されている。
  • MainWindow.xibが定義されているので、、、

(3)MainWindow.xib

  • InterfaceBuilderで中をみてみますと
    • Files Owner >Connection Inspectorをみると「delegateとappDelegate」が接続されている。

これは、UIApplicationインスタンスが「delegate」というoutlet(*)を持っていてそれがappDelegateに接続されているということ.
この1点により、デフォルトで作成された「AppDelegate.m」はデリデートオブジェクトとして定義されている。

  • つづいてhelloWorld App Delegate >inspectorをみてみますと
    • (info)にclass helloWorldAppDelegateとなっているので、クラスファイルと名前の紐付けがわかります。

(4)んでは、delegateアウトレットにつながっているAppDelegateクラスをみてみると

  • こちらには、クラスの宣言と@property宣言があります。

とくに@propertyはその変数にアクセスするためのセッター/ゲッターメソッドの宣言で、.mファイル側でsynthsizeで実装されます。
@property宣言にIBOutlet宣言がついていることで、InterfaceBuilderから参照することができる。
(InterfaceBuilederからというよりも。。xibの定義と連結できるということ。。。)
ここで定義されているのは、 UIWindowとviewControllerのプロパティ。

Labelなどview部品を扱うには、IbOutletをクラス側(viewController?側に定義する)

          • 途中。。。

とりあえずの処理の追い方としては

> main.m >info.plit > main.nib(xib) > xibのアウトレット/actionの接続先を確認 >ヘッダファイルから定義を確認。
> mファイルから処理内容を確認。>メソッドで動くタイミングが違うので、動作タイミングを確認。
>delegete先があるならそれも確認。(画面の値に入出力があるなら、たいていviewControllerにdelegateされている)

補足

デリゲーションオブジェクト
  • イベント発生時の処理のハンドリング
    • コンパスアプリでは、AppDelegateでアプリの起動時(applicationDidFinishLaunching)検知時のdelegate先を定義し、viewControllerにdelegate先の処理を定義している。
      • [??] delegate先がviewControllerなのはviewの表示を変更するためと考えればよいか。

(データの保存などなら、他モデルクラスを作成し、そちらにdelegateすると考えられる。)

  • イベントの種類
    • NSApplicationクラスはいろんなイベントを拾える。下記参照

http://www.oomori.com/cocoafw/ApplicationKit/NSApplication/index.html

nib(xib)ファイルとは(http://shibuym.blogspot.com/2009/09/iphonexibnib1.html)
  • まずnibファイルといっても、拡張子はxib←ここ大事!!
  • インターフェイスの定義ファイル。一般的に下記の内容が定義されており、mainクラスはnibファイルからインスタンスをロードして表示しているだけ。
    • どんなインスタンスを生成するか?
    • インスタンスの持つプロパティ
    • 他インスタンスとの関係性(OutletやActionの定義(*))
例:viewBased Applicationの場合の開発の流れとnib
  • (1)Viewの中に部品を配置(InterfaceBuileder)
  • (2) 部品のプロパティを設定(InterfaceBUiler)
  • (3)ViewControllerにOutletとActionを定義。Actionの処理を記述。
  • (4)OutletやActionを接続する。(InterfaceBUilder)
  • 上記のInterfaceBuilderで作業した部分はすべてxibファイルに記載される。

outlet actionとは

  • outletとはView上の部品とclass上の変数を紐付けるもの。(入力フィールドなどに利用)
  • actionとはView上の部品とclass上の処理を紐づけるもの。(ボタンなどに利用)

 - objective-c

  関連記事

objective-c
【Objective-Cが襲いかかってきた】IOS7+Xcode開発_TODOアプリ_作成メモ(1) プラスボタンのコード

よっしゃいくぜTODOアプリ(Xcode4.5向けだけど、5でやるぜ。なんとかな …

objective-c
[ios]シンプルアプリの作り方

viewbased-templateで作成。 viewControlellerを …

objective-c
【iOS7+Xcode5】FMDBサンプルアプリの構造確認①

DBの使い方を確認して、最終的には下記サイトを参考に作ったメモアプリを修正する形 …

objective-c
【とりあえず動いた…】IOS7+Xcode開発_TODOアプリ_作成メモ(3)【しかし詳細画面がない】

3/3でついにTODO完成だぜ! http://dev.classmethod. …

objective-c
【Objective-C】@interface 宣言中の「<>」の意味

こんなソースがある時の内の意味がなんだったけと。 [crayon-58d71ae …