2

だから私は今日GHUnitで遊んでいて、XCode4のsimilatorでうまく動作するいくつかの素晴らしいテストがあります。iPhone自体で実行すると、次のエラーが発生します。

'Unable to instantiate the UIApplication delegate instance.
No class named GHUnitIPhoneAppDelegate is loaded.'

あなたが尋ねる前に、はい、私はリンカーのオプション-ObjC-all_loadセットを持っています、そして私が言ったように、それはシミュレーターでうまく動作します、それでなぜiPhone自体ではないのですか?

困惑!

4

3 に答える 3

3

この問題の本当の理由はわかりませんが、回避策を見つけました。

理由のために、私はまだ交換を理解するのがよくわかりません:

int retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIPhoneAppDelegate");

int retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIOSAppDelegate");

メインファイルで問題を修正します。

クラスはGHUnitIPhoneAppDelegateから継承しGHUnitIOSAppDelegate ますが、最終的なバイナリには含まれていません( nm -a GHUnitIPhoneAppDelegate|grep IPhoneApp結果なしで実行しました)。

クラスはクラスから継承するだけで(追加のメソッドや属性はない)、フレームワークのどこにもこのクラスがインスタンス化されない(文字列でのみ言及される)ため、コンパイラはスペースを節約するために、バイナリ情報からクラスを削除します。 iOSモードで。

これがお役に立てば幸いです、少なくともそれは私にとってはうまくいきました。

于 2011-08-11T08:26:16.007 に答える
1

明確にするために、2011年8月11日にhttps://github.com/gabriel/gh-unit/downloadsにアップロードされたGHUnitIOS-0.4.32はスローします

NSInternalInconsistencyException', reason: 'Unable to instantiate the UIApplication delegate instance. No class named GHUnitIPhoneAppDelegate is loaded.'

含まれている場合int main(int argc, char *argv[])

int retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIPhoneAppDelegate");

それは以下のために働きます:

int retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIOSAppDelegate");

GHUnitIOSAppDelegateがそのarmv6およびarmv7ライブラリから欠落しているため。GHUnitIPhoneAppDelegateがシミュレータライブラリにあることに注意してください...

GHUnitIOS.framework$ nm -a -arch i386 GHUnitIOS | grep GHUnitIPhoneAppDelegate
nm: no name list
GHUnitIOS(GHUnitIPhoneAppDelegate.o):
00000084 S _OBJC_CLASS_$_GHUnitIPhoneAppDelegate
00000070 S _OBJC_METACLASS_$_GHUnitIPhoneAppDelegate
00000048 s l_OBJC_CLASS_RO_$_GHUnitIPhoneAppDelegate
00000020 s l_OBJC_METACLASS_RO_$_GHUnitIPhoneAppDelegate
GHUnitIOS.framework$

しかし、2つのデバイスライブラリのどちらにもありません...

GHUnitIOS.framework$ nm -a -arch armv6 GHUnitIOS | grep GHUnitIPhoneAppDelegate
nm: no name list
GHUnitIOS.framework$

GHUnitIOS.framework$ nm -a -arch armv7 GHUnitIOS | grep GHUnitIPhoneAppDelegate
nm: no name list
GHUnitIOS.framework$
于 2011-09-07T16:19:02.470 に答える
0

@apoucheの回答は、私の問題に答えて助けてくれたので、受け入れられたものとして残しておきます。

しかし、GHUnitの開発者であるgabrielから、これはバグであり、この問題を修正する新しいリリース(0.4.32)を作成したというメッセージがありました。

于 2011-08-12T13:18:12.327 に答える