静的ライブラリ内のクラスを Interface Builder で利用できない - Xcode4

SPECIAL


静的ライブラリ内の独自クラスを Interface Builder で使用するには

静的ライブラリ内に実装した UILabel から派生したクラスを、Interface Builder 内で UILabel オブジェクトの Class として設定したところ、実行時に、その UILabel オブジェクトが読み込まれる頃合いのタイミングで、次のようなメッセージが表示されてしまいました。

Unknown class EzLocalizedLabel in Interface Builder file.

これは、UIView のローカライズ作業を簡単にする でお話した EzLocalizedLabel を Interface Builder 内で設定した際に表示されたメッセージです。

これによってアプリが落ちてしまうようなことはないものの、Interface Builder で貼り付けたもともとのクラス(今回は UILabel)として動作してしまうような感じで、期待した動作をしてくれない感じでした。

 

これは、どうやらビルド時のリンカーオプションで "-ObjC" を設定することで、解消することができるようでした。

プロジェクトを選択して、その "PROJECT" から "Build Settings" を開きます。そこの "Linking" セクションの "Other Linker Flags" のところで "-ObjC" を指定します。

このようにしてビルドし直すことで、実行時にも適切に、Interface Builder で設定した派生クラスが実行されるようになりました。