Objective-C 基礎編 Vol2

2010/05/04

実家に帰ってます。 てか、家の鍵が・・・色んな事に気を取られてダメダメです(^^;) えっと、ビックカメラで書籍買いました。 流石ブームだけあってかなり豊富(ネットだともっとあるんだけど) ・「はじめてのIphone3プログラミング」 まだ触りだけど、Objective-Cの新旧のコトなど突っ込んであって、深く理解するには感じかも? ・「そのまま使えるiPhoneゲームプログラミング」 まだ全然読んでないけど、実用的なサンプルとOpenGL ESの勉強のために。 まずは、「はじめてのIphone3プログラミング」から。 Objective-C2.0からは、プロパティのアクセサメソッドを 自動生成させるためのコンパイラディレクティブが導入された。 Objective-Cが分かりにくいと言うカラクリは、コーディングを減らした結果にあるかも知れない。 今回は、アクセッサメソッドの基本について。 ■@synthesize アクセサメソッド生成部分

@synthesize インスタンス,...;

■@property アクセサメソッド宣言部分

@property (nonatomic, retain) IBOutlet UIクラス *インスタンス
@property (assign) NSString *インスタンス;
@property (retain, readonly) NSString *インスタンス;

まずはよく出てくるセット

・nonatomic:マルチスレッド環境でオーバーヘッドを軽減。 複数のスレッドから同時に読み込み時の動作保障しない。 デフォルトはatomicだが属性なし。 ・retain:オブジェクトのメモリを勝手に解放しない

その他、

・assign:インスタンス変数に単純に代入 ・copy:インスタンス変数に引数をコピー ・readonly:getterのみを生成 ・readwrite:setter、getter両方を生成(デフォルトで省略)

アクセッサーの処理を普通にコーディングすると、面倒なコードを書かなくて済む。<

- (id) foo {
    return foo;
}
- (void) setFoo:(id) aFoo {
    if (aFoo != foo) {
        [aFoo retain];
        [foo release];
        foo = aFoo;
    }
}

■ (id) sender InterfaceBuilder

- (IBAction) UIクラス:(id) sender

idはUIオブジェクトの「id」そのまま。 で、senderって何かの決まりと思ってたら、単なる引数名のことだった。

「センダー」と言う呼び名から、「sender」と書かれているサンプルが多い。 --2010/07/17追記-- いやいや、senderはUINibDeclarations.hのプロトコルのようです。 この通り記述しないとコンパイルエラーになります(^^;) --2010/07/20追記-- またまた、間違い? この前実装した時は、sender以外だとエラーになった(気のせい?)けど、今やったら普通に動く。。。 まぁ、混乱しない為にもsenderでいいと思う。

luvtechnoiPhone開発とかの備忘録。

なんだから覚える事が多いけど、実際何が行われているか?を理解しないと、 先に進めないので頑張らないと(^^;)