トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

iOS

assert

  • NSAssert( condition, NSString *description )
    • Target Outputには止まった箇所(ソース名/行番号など)が出力される。
    • descriptionはログに出力される。(けど、ログって何?)
    • descriptionに引数を付けることも出来る。(NSAssert1〜5まである)
NSAssert1( condition, @"%d", 123 );
NSAssert2( condition, @"%d %f", 123, 4.56f );
    • NS_BLOCK_ASSERTIONSが定義されていると無効になる。
      • Releaseのビルドオプションに-DNS_BLOCK_ASSERTIONSを追加。

printf

#define NSLog( args... ) NSLog( args, 0 )

クラス

  • クラスのインスタンス変数は、メモリ上にインスタンスが割り当てられるときにnilで初期化される。

プロパティ

 違う名前でproperty/synthesize

{
  int hoge_;
}
@property (readonly) int hoge;

@synthesize hoge = hoge_;

 nonatomicにしないと参照しただけでretainCountが増える

View/ViewController

  • ビューをプログラムで構築している場合は、ビューの作成コードをView ControllerのloadViewメソッドに記述します。(「iOS View プログラミングガイド」より)
  • ビューをプログラムで作成するかnibファイルからロードするかにかかわらず、viewDidLoadメソッドにはビューの設定コードを追加で

きます。(「iOS View プログラミングガイド」より)

  • initでビューを作成(self.viewをalloc)するとloadViewやviewDidLoadが呼ばれない。

シングルトン

autoreleaseをさっさとreleaseさせる方法

for()
{
 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 /* 処理 */
 [pool drain];
}

ARC

Scheme

  • Debug用とRelease用のSchemeを作成すると便利。
    • [Product]-[Edit Scheme],[New Scheme],[Manage Schemes]あたりで作成/編集。
    • デバイス選択のところでSchemeを選択出来るようになる。

デバッグ

  • [Scheme]-[Run]-[Arguments]のEnvironment Variablesに下記の定義をすると色々分かって便利らしい。
NSZombieEnabled     YES
NSDebugEnabled      YES
MallocStackLogging  YES
    • NSZombieEnabledはメモリ消費が激しいので注意。
      • deallocしてもメモリを解放しないため。
    • Xcode4では[Product]-[Edit Scheme]-[Run]-[Diagnostics]内のチェックボックスで設定できる。

本体仕様

 解像度

機種 解像度 ドット数比率 note
iPhone 480 x 320 3:2
iPhone 960 x 640 3:2 Retina
iPhone5 1136 x 640 71:40 Retina
iPod touch 960 x 640 3:2
iPod classic 320 x 240 4:3
iPad2 1024 x 768 4:3
新しいiPad 2048 x 1536 4:3 Retina

 CPU

ARMv6

  • iPhone
  • iPhone 3G
  • iPod Touch 1st~2nd generation

ARMv7

  • iPhone 3GS
  • iPhone 4
  • iPhone 4S
  • iPad
  • iPad2
  • iPod Touch 3rd~4th generation

ARMv7s

  • iPhone 5
  • iPod Touch 5th generation

 グラフィックチップ

  • PowerVR MBX
    • iPod Touch 1st~2nd generation
    • iPhone
    • iPhone 3G
  • PowerVR SGX
    • iPod Touch 3rd~4th generation
    • iPhone 3GS
    • iPhone 4
    • iPad (SGX535)
    • iPad2 (SGX543MP2)
    • 新しいiPad (SGX543MP4)

グラフィック

 圧縮テクスチャ(PVRTC)

texturetool -e PVRTC -o out.pvr -f PVR in.png
texturetool -e PVRTC --bits-per-pixel-2 -o out.pvr -f PVR in.png
texturetool -e PVRTC --channel-weighting-perceptual -o out.pvr -f PVR in.png

サウンド

 ライブラリ

AVAudioPlayer

  • 重い。playやprepareToPlayで10msとか20msとか掛かる。

OpenAL

  • 未検証

 コンバート

  • ターミナルで.wavから.caf(ima4)に一括コンバート
find . -name '*.wav' -exec afconvert -f caff -d ima4 {} \;

OpenGL

グラフィックチップ OpenGLのバージョン 2Dテクスチャの最大サイズ
PowerVR MBX OpenGL ES1.1のみ 1024x1024
PowerVR SGX OpenGL ES2.0もOK 2048x2048
  • テクスチャサイズは2のべき乗。(ES1.1の仕様、2.0は不明)
    • 縦/横は違うサイズでもOKぽい。

Retina対応

tips

Last modified 2013-02-01 16:26:36