Xcodeの挙動をgitを使いながら追う

はじめに

Interface Builderなどで作っていくと、
Xcodeが内部の設定ファイルを書きかえるなどして、
プロジェクトを構築していくはずなので、それを探る

Labelを置いてみたとき

chapter4.xcodeproj/project.xcworkspace/xcuserdata/ユーザ名.xcuserdatad/UserInterfaceState.xcuserstate
chapter4/en.lproj/ViewController.xib

の2ファイルが変化したもよう。

UserInterfaceState.xcuserstateファイル

なんてこったバイナリーファイルみたい.....
プロジェクトが開くたびに更新されるみたいということで、
バージョン管理には入れてない人が多いみたい。


参考:
個人的なXcode用.gitignore – LexTech
http://www.awaresoft.jp/ios-dev/item/95-xcode-4%E3%81%A7%E6%97%A2%E5%AD%98%E3%81%AExcode%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8B%E3%82%89%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%ABgit%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF.html

ViewController.xibファイル

これはViewController.xibファイルをインターフェースビルダーで
いじったので変更されて当然といったところか。
中身を見てみるとXMLファイルだった。

すげー、色々増えたが、逐一調べている余裕がなさそうなのでとばす。


IBOutletに接続

ViewController.hに以下を追加

@interface ViewController : UIViewController{
    IBOutlet UILabel *myLabel;
}@end

File's Ownerから画面にドラッグして接続(File's Owner → 画面)


変更があったのは、無視すると決めたUserInterfaceState.xcuserstateを除いては、

ViewController.h
ViewController.xib

の2つ。


見たことないファイルが変更されてなくてよかった。
ViewController.hは自分で編集したので当然として、
やはり問題は、ViewController.xib。


色々増えてるんだけど、やはり調べてる余裕はなさそうなので飛ばす。
個人的には、

<string key="NS.key.0">myLabel</string>

というように、変数名が記載されたところがあるのでこの辺りが重要なのかと思う。

IBActionに接続

まずActionをヘッダーに宣言

@interface ViewController : UIViewController{
    IBOutlet UILabel *myLabel;
}

-(IBAction) tapBtn;
@end

あとUIViewController.xibにボタンを配置。

やはり

ViewController.h
ViewController.xib

に変更あり。

ViewController.mに以下を追加

@implementation ViewController

-(IBAction)tapBtn{
    myLabel.text = @"Hello!";
}

変更があったのは、

ViewController.m

これは当然。

シミュレーターで実行すればちゃんと動いた。