実家に帰ってます。 てか、家の鍵が・・・色んな事に気を取られてダメダメです(^^;) えっと、ビックカメラで書籍買いました。 流石ブームだけあってかなり豊富(ネットだともっとあるんだけど) ・「はじめての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でいいと思う。
なんだから覚える事が多いけど、実際何が行われているか?を理解しないと、 先に進めないので頑張らないと(^^;)