トップ 一覧 Farm 検索 ヘルプ RSS ログイン

iOSの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{outline}}
!!!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
*NSLog( NSString *format, ... )
**無効化(参考サイト:[リリースビルド時にNSLogを自動で一括削除する(Snow Leopard対応版)|http://iphone-dev.g.hatena.ne.jp/tokorom/20100421/1271861868])
 #define NSLog( args... ) NSLog( args, 0 )

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

!!!プロパティ
!!違う名前でproperty/synthesize
 {
   int hoge_;
 }
 @property (readonly) int hoge;
 
 @synthesize hoge = hoge_;

!!nonatomicにしないと参照しただけでretainCountが増える
*[Objective-Cの宣言プロパティにはまる|http://d.hatena.ne.jp/rabbit2go/20101214/1292319921] / Basic

!!!View/ViewController
*ビューをプログラムで構築している場合は、ビューの作成コードをView ControllerのloadViewメソッドに記述します。(「iOS View プログラミングガイド」より)
*ビューをプログラムで作成するかnibファイルからロードするかにかかわらず、viewDidLoadメソッドにはビューの設定コードを追加で
きます。(「iOS View プログラミングガイド」より)
*initでビューを作成(self.viewをalloc)するとloadViewやviewDidLoadが呼ばれない。

!!!シングルトン
*[シングルトンインスタンスの作成|http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html] / developer.apple.com
*[デザインパターンをObjective-Cで - Singleton (1)〜(3)|http://news.mynavi.jp/column/objc/050/] / マイナビニュース
*[継承して使えるSingletonクラス|http://d.hatena.ne.jp/Yudoufu/20090318/1237385821] / ゆどうふろぐ
**インスタンスの保持にNSMutableDictionaryを使用。
*[Singleton(dispatch_once版)|http://blog.heartofsword.net/archives/tag/objective-c] / らいふログ
**未検証(dispatch_onceって何?)

!!!autoreleaseをさっさとreleaseさせる方法
*[autoreleaseのひみつ|http://togetter.com/li/88945] / togetter(splhack)
 for()
 {
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  /* 処理 */
  [pool drain];
 }

!!!ARC
*[ARC (Automatic Reference Counting) : Overview|http://blog.natsuapps.com/2011/11/ios5-arc-overview.html] / Natsu's note

!!!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(第1〜2世代)
*iPod Touch 1st~2nd generation

!ARMv7
*iPhone 3GS
*iPhone 4
*iPhone 4S
*iPad
*iPad2
*iPod Touch(第3〜4世代)
*iPod Touch 3rd~4th generation

!ARMv7s
*iPhone 5
*iPod Touch 5th generation

!!グラフィックチップ
*PowerVR MBX
**iPod Touch(第1〜2世代)
**iPod Touch 1st~2nd generation
**iPhone
**iPhone 3G
*PowerVR SGX
**iPod Touch(第3〜4世代)
**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
*[iPhone でテクスチャ圧縮 (PVRTC) を使う|http://webos-goodies.jp/archives/using_compressed_textures_in_iphone.html] / WebOS Goodies

!!!サウンド
!!ライブラリ
!!!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対応
*[[UIScreen mainScreen] bounds]の値はRetinaでも通常と同じ。((0,0,320,480)など)
*Retinaでは[UIScreen mainScreen].scale=2.0になっている。
**scaleは4.0以降にしか存在しない。
**iPadはscale=1.0
*関連リンク
**[Simulator iPhone Retina has wrong screen resolution|http://stackoverflow.com/questions/4772647/simulator-iphone-retina-has-wrong-screen-resolution] / stackoverflow
**[OpenGL ESのRetina対応|http://www.comgate.jp/taiatari/archives/206] / Taiatari

!!!tips
*[iOS日本語ドキュメント|https://developer.apple.com/jp/devcenter/ios/library/japanese.html] / iOS Dev Center
*[Xcode 4.2 for Snow LeopardにiOS5.1 SDKを入れる|http://www.iwazer.com/~iwazawa/diary/2012/03/ios51-to-xcode-42-for-snow-leopard.html] / IwazerReport