Could not instantiate class named NSLayoutConstraint

Xcode4.5.2でプロジェクトを作成して、その後iOS5.0にターゲットを変更するとNSInvalidUnarchiveOperationExceptionと共に表題のエラーが発生する。

Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'

google先生にお聞きすると既知であり、既に様々な方々が対応されているようだ。

Xcodeのウィザードでプロジェクトを生成するとデフォルトでNSLayoutConstraintと呼ばれるレイアウト用のクラスがInterfaceBuilderで使われるが、それはiOS5はサポートしていないため、同エラーが発生してしまう。

解決策は、IntefaceBuilderで同NSLayoutConstraintクラスを使った機能を無効にすることだが、この指定もinterfaceBuilderの"Identity Inspaector"から行う。


中段以降にある"use Autolayout"のチェックを外せばOK。
プロジェクトをクリーンしてビルドし直せば、iOS5をターゲットにしても動くはずだ。

にしても…ターゲットによって自動的にOn/Offして欲しいところだな。