[解決済み】実行時に「Interface Builderファイル内の不明なクラス<MyClass>」というエラーが発生する。
質問
Interface Builderは
MyClass
アプリケーションを起動するとエラーが発生します。
この現象は
MyClass
はライブラリの一部であり、アプリケーションターゲットで直接クラスをコンパイルした場合は発生しません。
解決方法は?
にもかかわらず、" Interface Builder ファイルに不明なクラス MyClass があります。 この問題は、Interface Builderとは関係なく、リンカーが、クラスを直接使用するコードがないためにリンクしていないことに起因しています。
.nibデータ(.xibからコンパイル)を実行時に読み込んだ場合。
MyClass
が文字列で参照されていますが、リンカーはコードの機能を解析せず、コードの存在だけを解析するので、そのことはわかりません。 他のソースファイルはそのクラスを参照していないので、リンカーは実行ファイルを作るときにそのクラスを最適化して存在を消してしまうのです。 そのため、Appleのコードがそのようなクラスをロードしようとすると、それに関連するコードを見つけることができず、警告が表示されます。
デフォルトでは、Objective-Cのターゲットには
-all_load -ObjC
フラグがデフォルトで設定されており、すべてのシンボルが保持されます。 しかし、私はC++のターゲットから始めていたので、それを持っていなかった。 それでも、リンカーが攻撃的にならないようにする、これを回避する方法を見つけました。
私がもともと使っていたハックは、次のような空の静的ルーチンを追加することでした。
+(void)_keepAtLinkTime;
というように、何もしないが一度だけ呼び出すようなもの。
int main( int argc, char** argv )
{
[MyClass _keepAtLinkTime];
// Your code.
}
こうすることで、リンカーはクラス全体を保持するようになり、エラーは消えます。
コメントでjlstreckerさんが指摘されているように、本当は
_keepAtLinkTime
メソッドを使用します。 など、既存のものを呼び出すだけ。
[MyClass class];
はトリックを実行します。
NSObject
).
もちろん、コードのどの場所でもこれを呼び出すことができます。 到達できないコードの中にあってもいいと思う。 このアイデアは、リンカを騙して
MyClass
がどこかで使われていれば、それほど積極的に最適化されることはないでしょう。
Xcode 6.3.2 & Swift 1.2
Swiftでのビューの定義。必ず
init(coder aDecoder: NSCoder)
. Objective-Cでのビューコントローラの定義。そして、梨の木に刺さったペン先。
Nib 詳細インスペクタにモジュール名を追加し、クラスを選択します。
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] クラス vs. #インポート
-
[解決済み] Xcode 6のバグ:Interface Builderファイル内の不明なクラス
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] ファイルはユニバーサル(3スライス)ですが、iOSの静的ライブラリのための(n)ARMv7-sスライスエラーが含まれていない、どうにかして回避するには?
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
-
[解決済み】UIImage (Cocoa Touch) または CGImage (Core Graphics) からピクセルデータを取得する方法は?)
-
[解決済み] CFStringRefをNSStringに変換する方法は?
-
[解決済み] @IBDesignable のエラーです。IB Designablesです。自動レイアウトステータスの更新に失敗しました。Interface Builder Cocoa Touch ツールがクラッシュしました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Cocoa:フレームとバウンドはどう違うの?
-
[解決済み] Xcode 6のバグ:Interface Builderファイル内の不明なクラス
-
[解決済み】Core Data vs SQLite 3 [終了しました。]
-
[解決済み】キャッシュを空にし、すべてのターゲットをクリーンアップする方法 Xcode 4 以降
-
[解決済み】UIImage (Cocoa Touch) または CGImage (Core Graphics) からピクセルデータを取得する方法は?)
-
[解決済み】ユニットテスト内のコードでバンドルリソースを見つけられないのはなぜですか?
-
[解決済み] NSUserDefaultsにNSDateを格納する最適な方法は何ですか?
-
[解決済み] CFStringRefをNSStringに変換する方法は?
-
[解決済み] NSTextFieldにテキストを設定する方法を教えてください。
-
[解決済み] NSDateを年、月、日、時、分、秒の各スタイルにフォーマットする。