Feb 17, 2011

詳細 Objective-C 2.0 随時更新 自分用メモ

通知センターでのぶらさがりポインタ注意ポイント P.361

通知センターに登録したオブザーバや、ポスト元として指定したオブジェクトは、
それらをreleaseする前に、通知センターから remove すること。
通知センターへの登録時に、retain されないので、ぶらさがりポインタになってしまう。


通知キュー

通知ポストの処理が終わるのを待たない場合は、通知キュー ( NSNotificationQueue ) を使う。
通知キューを使うと、非同期ポストと、同様のポストの統合が行われる。


_cmd

self と同様、暗黙のオブジェクトで、実行中のメソッドのSEL を表す。
- (id) hoge;
の場合、_cmd と、@selector(hoge) が同等になる。


リソースバンドル

リソースを取得する場合は、必ずロケールを意識した指定をすること。
NSString *path = [[NSBundle mainBundle] pathForResource:@"hoge" ofType:@"ext"];


iOSにおけるデバイスのアクセス

デバイスごとにファイルを分けてリソースバンドルで読み込む場合は、ファイル名を次のようにする。
 [ファイル名]~[デバイス名].拡張子
 image1~iphone.jpg
 image1~ipad.jpg

iPhone4用の高解像度の画像を用意する場合。
 [ファイル名]@2x.拡張子
 [ファイル名]@2x~[デバイス名].拡張子
 image2@2x~iphone.jpg
 image2~iphone.jpg
 image2~ipad.jpg

Info.plist の設定を分ける場合。
 [パラメータ名]~[デバイス名]
 UIInterfaceOrientation~ipad


アプリケーション名をローカライズ p.401

Info.plist
<key>CFBundleName</key>
<string>SpaSearch</string>
<key>CFBundleDisplayName</key>
<string>SpaSearch</string>

Japanese.lproj/InfoPlist.strings
CFBundleName = "温泉サーチ"
CFBundleDisplayName = "温泉サーチ(暫定版)"


ユーザーロケールの取得 p.402
id default = [NSUserDefaults standardUserDefaults];
id dic = [default dictionaryRepresentation];
id str = [[NSString alloc] initWithFormat:@"Data=%@" locale:dic, [NSDate date]];
みたいな。


アサーション
NSAssert(condition, NSString *description [, arg, ...]);
NSAssert(x > y, @"Illegal values x(%d) y(%d)", x, y);

コンパイル時に NS_BLOCK_ASSERTIONS というマクロを定義されていれば、
コードに組み込まれない。
gcc hoge.m ... -DNS_BLOCK_ASSERTIONS ...



No comments:

Post a Comment