ちょっと前にやったことなんだけど、iOS6が公開されるまではNDA下にあったのでかけなかった。今更だけど記録の意味もこめて書いておく。
以前からあるiPhone/iPod touch向けアプリだが、iOS6 SDKを使ってビルドするとエラーが出たり、実行時に問題があったりした。その修正は以下のように行った。
■UIWindowのrootViewContorllerは必須
UIWindowのrootViewControllerはiOS4.0から導入されているのだが、これは設定しなくても動いていた。が、iOS6からはこれを設定しないと、アプリケーションが起動しない。以下のようなエラーが出る。
Application windows are expected to have a root view controller at the end of application launch
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 色々な設定
self.window.rootViewController = navController;
}
■TableViewGroupBackgroundColorは廃止
テーブルビューをグループスタイルにしたときの背景色として Table Cell Grouped Background Color を設定していると、薄いブルーで縦シマの背景になっていたが、これがiOS6では真っ白になる。

理由はわからないが廃止されたようだ。対策としてはClear Colorを設定すればよい。そうすれば今まで通りの背景が表示される。
■enumでswitch文を書くときの警告
これはSDKの違いというよりもコンパイラの違いなんだと思うけど、一応。
整数定数をenumで定義して使うのはよくするし、ある値がenumで設定したどの値になっているかでswicth文で処理を振り分けるのもよくやる(オブジェクト指向的によくないとかは別の問題)。
このときenumで書かれた定数のリストを全部caseに書かないと書き忘れてないかい?って警告されるようになる。
enum SignalColor {
kSignalColorBlue, kSignalColorYellow, kSignalColorRed,
};
SignalColor state;
switch ( state ) {
case kSignalColorBlue: [self go]; break;
case kSignalColorRed: [self stop]; break;
}
のようなコードを書いていると以下のように警告される。警告なので実行はできるけど私はビルド時に警告が残っていると気持ちが悪いので修正が必要。
Enumeration values 'kSignalColorYellow' not handled in switch
default:を書くだけでもいい。
■長い画面サイズ対応
iOS6対応というよりも、iPhone5(iPod touch 5th)対応と言ってもいいだろうが、画面サイズが480×320(960x640)だけでなく568×320(1136x640)の場合もあり得るのでそのための対応が必要。
といっても色々あるのだが、"Default-568h@2x.png"という画像ファイルがないとiPhone5で起動した時にiPhone5対応と認められずに上下に黒い帯がついた状態で起動してしまい使える画面サイズは480×320のままになっている。
以下の警告が出ているが自動修復すると黒画面でデフォルト画像を作ってはくれる。あとは自分でこのサイズで画像を作成してファイルを置き換えるとよい。
hogehoge.xcodeproj Missing "Default-568h@2x.png" launch image
■タブビュー
UITabViewControllerを使ったアプリで長い画面対応にしたときにタブのタップを認識しない現象が起きている。古いプロジェクトを持ってきている正で何かの対応が必要なんだろうが、今の所解明できていない。
iOS6 SDKではiOS3.1をターゲットにしたアプリを開発できないので、古いプロジェクトを継承しているアプリケーションは開発を止めて、新たにプロジェクトを作り直そうと思っているのでこれ以上追求に時間はかけないつもり。
中途半端でごめんなさい。