Interface Builder が静的ライブラリ内のクラスを認識できない
-
21-08-2019 - |
質問
いくつかの UIView サブクラスを静的ライブラリにリファクタリングしました。ただし、Interface Builder を使用して、静的ライブラリを使用するプロジェクトのビュー コンポーネントを作成すると、Interface Builder はライブラリ クラスを認識しないことがわかります。クラス インターフェイスを Interface Builder に表示するにはどうすればよいですか?
アップデート: 正解は、ヘッダーを「XIB ブラウザ」にドラッグすることです。「.h」ファイルは、ファインダー ウィンドウから次の画像で示されているウィンドウ領域にドラッグできます。
代替テキスト http://img211.imageshack.us/img211/1221/xibbrowser.png
解決
Interface Builder の xib ブラウザに静的ライブラリをドラッグしてみてください。静的ライブラリでは試していませんが、概念は同じです。ヘッダー ファイルを IB にドラッグすると、それらのクラスにアクセスできます。
他のヒント
LexH さん、静的ライブラリを構築するときに -ObjC フラグを使用してリンクしてみてください。それは私にとってはうまくいきました...約1年間:-) OSXの新規インストールとxcodeのアップグレードで問題が再発したため、この投稿を見つけました。ただし、XCode 3.1.2 では動作しました。
- デビッド
LexH と同じ問題を追加します。ダミーのクラスメソッドを呼び出した場合にのみ機能しました。問題は、ターゲットの下の「ライブラリとのリンクバイナリ」に静的ライブラリを追加しなかったことです。不思議なことに、他のものはすべてうまくいきました。
このガイドに従って静的ライブラリにリンクしました 静的ライブラリを作成する
私も同じ問題を抱えていました。ライブラリまたはヘッダーを XIB ブラウザにドラッグしても機能しませんでした。クラスファイルの読み取りが機能しませんでした。そこで私は次のように電話しました。
[MyLibraryClass version]; // Substitute your class name for "MyLibraryClass".
これはうまくいきました。version は NSObject のクラス メソッドであるため、NSObject のすべてのサブクラスはそれを継承します。