iPhone SDKプログラミング大全
Amazon.jpで発売前から予約していたにも関わらず、キャンセルされちゃったこの本、帰りにふらっとヨドバシに寄ったら以前は置いてなかったのに入荷したのかたんまりと置いていたので即購入。やっと手に入った。
噂通り大全のくせに薄い本w まぁ内容が濃いだろいうということで。
自作アプリをApp Storeで世界に向けて販売できる!! iPhone SDKプログラミング大全 (MacPeople Books)
木下 誠
ついでにハゲまくってきたパワサポのAir Jacket黒の代わりにsimplismのシリコンケース黒を購入。ハードケース以外興味が無かったんだけど、まぁ食わず嫌いもアレなのでお試しってことで。
パワーサポート Air Jacket set for iPod touch rubber coating Black PTC-72
Simplism iPod touch用シリコンケース(ブラック) TR-SCTC-BK
本当はGriffinのマイクロレンズ付きが欲しかったんだけど、高いし入手困難なため様子見。
WAVE-IPHONE-BK
ガベコレゆとり世代
学生時代にC言語をやらされてmallocやらやってたんだけど、いざ社会にでるとJavaやらRubyやらガベコレ任せな実装をばかりしてきたので、いざObjecttive-Cでメモリ管理を自分でやろうとした時に確保~解放の流れをイメージできないことに気づく。
世間では様々なところでゆとりゆとりと言われているけど、これもまたある意味ゆとりだなーと痛感。もっとちゃんとCやっときゃよかったなー。当時からVBやらJavaに逃げてたのが今になって徒となってる気がしないでもない。
NO MORE ガベージコレクション!
5章メモリ管理方式 Objective-C
5章まで読んだ。リファレンスカウンタは大体分かった。
ただ、サンプルで1つだけ腑に落ちないところがあって未だによく分からない。
p.111
[c]
- (BOOL)undoCalc
{
if (prev == nil)
return NO;
[current release];
current = prev;
prev = nil;
return YES;
}
[/c]
なんでprevはreleaseしないのかが分からない。
まぁとりあえず読み進める。
主眼はiPhoneアプリの開発だから6章のガーベジコレクションは今のところスキップしておこう。今は切り替えないとCocoaでは使えないらしいけど、そのうち主流になっていくんだろうな。
4章まで読んだ
萩原本をボチボチと4章まで読んだ。大体OOの基礎的な話ばっかりでまだ面白くない。
クラスオブジェクトからインスタンス生成をJavaと比較してみる。
■Objecttive-C
[c]
Class clazz = flag ? [HogeA class] : [HogeB class];
id obj = [[clazz alloc] init];
[obj methodA];
[/c]
■Java
[java]
Class clazz = flag ? HogeA.class : HogeB.class;
Object obj = clazz.newInstance();
((SuperHoge)obj).methodA();
[/java]
Javaの場合はキャストしないとメソッドを呼べないけど、Objecttive-Cは呼べるらしい。ただ、id型に対して存在しないメソッドをコールしてもコンパイラレベルでは検知できないので一長一短はある。
追記
Javaの場合もリフレクションを使えば厳密的にはキャストなしで呼べるか。ただ結構面倒くさい手続きが必要。
[java]
Class clazz = flag ? HogeA.class : HogeB.class;
Object obj = clazz.newInstance();
Method method = obj.getClass().getDeclaredMethod("methodA", new Class[0]);
method.invoke(obj, new Object[0]);
[/java]
