Xcode4.5でiOS 6未満もターゲットにした新規プロジェクトを作る場合の注意点(エラーの対処法)
新規プロジェクト作成 → iOS Deployment Target を6.0未満に設定 → Interface Builder(IB)を使って適当にボタンを配置 → iOS 6未満のデバイスでテスト、といった一見何の変哲もない流れ。
Xcode4.5では、エラーを出してクラッシュしました。
これは、作成されたIB用 .xibファイルの初期設定に問題があるようです。
iOS 6のAutolayout機能
Xcode4.5では、新規に作成された.xibファイルの初期設定で、Autolayoutが有効になっていました。
この状態でIBを使いView上にボタン等を配置すると、Autolayoutの設定を管理するConstraintsが作成されてしまうため、非対応OSでは落ちてしまうようです。
出力されたエラー内容
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'
設定を無効にするには、IB画面上からFile inspectorを選択し、Interface Builder Document 項目の設定にある use Autolayout のチェックを外せば解決です。
後から追加した .xibファイルでもなるので、このちょっとした手間が気になるところ。...(デフォルトの設定は変えられないのかな?)