[Objective-C] Androidと比較しつつ Hello World を書く

AndroidのActivityサブクラスに当たるものがUIViewControllerサブクラス。 このクラスでUIView(サブ)クラスを操作したりしてプログラムを作成していく。

プロジェクトを作成する

新規プロジェクトで View-based Application を選択する。 View-based Application は一般的なiPhoneアプリケーションでよく使うもの。

***Delegateクラスはアプリケーション全体を管理するためのクラスで、

この中でUIViewControllerサブクラスのインスタンスが生成されている。

//  FooBarAppDelegate.h

#import <UIKit/UIKit.h>

@class FooBarViewController;

@interface FooBarAppDelegate : NSObject <UIApplicationDelegate> {
  // UIViewから派生したウィンドウを扱うクラス
    UIWindow *window;
  // ビューコントローラのサブクラスを宣言
    FooBarViewController *viewController;
}

// @property でアクセサを自動生成している
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet FooBarViewController *viewController;

@end

viewDidLoadでビューにラベルを追加

『AndroidのActivity#onCreateに当たるメソッド』で正しいだろうか?ライフサイクルを理解してないけどもロード時の最初にコールされるメソッドが viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];

  // UILabel部品を生成、AndroidではTextViewに当たる
  // alloc は C言語のmalloc的なもの
  UILabel *label = [[UILabel alloc]
            // コンストラクタ的なモノ
            // 名前は何でもいいけど init接頭語を付けることが多いらしい
            // CGRectMake(x, y, width, height); 引数はすべてCGFloat型で
            // こいつで部品の一座標と大きさを指定してから配置していく
            initWithFrame:CGRectMake(10, 20, 120, 30)];

  // labelに文字列をセット
  // @マークは NSStringクラスの文字列
  [label setText:@"hello world"];
  // ビューコントローラが持つ大元の
  // view に label をセット
  // このときラベル部品のリファレンスカウントが増える
  [self.view addSubview:label];
  // release でリファレンスカウントを減らす
  [label release];
}

シュミレータで実行するとこうなる

hello world と表示される

Share
関連記事