5

My Xcode プロジェクトでは、XMPP フレームワークを統合しました。iOS 5.1 シミュレーターでは問題なく動作します。iOS 4.3 シミュレーターでプロジェクトを実行しようとすると、次のエラーが発生します。

dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong
  Referenced from: /Users/admin/Library/Application Support/iPhone Simulator/4.3.2/Applications/67451DE6-EFC1-4313-9A29-C2C641F727C6/AppName.app/AppName
  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

dyld: Symbol not found: _objc_storeStrong
  Referenced from: /Users/admin/Library/Application Support/iPhone Simulator/4.3.2/Applications/67451DE6-EFC1-4313-9A29-C2C641F727C6/AppName.app/AppName
  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

次のコード行でエラーが発生しました:xmppStream = [[XMPPStream alloc] init];

さらにデバッグした後、ここでエラーが発生することがわかりました:

- (id)init
{
    if ((self = [super init])) //**CRASH WHEN EXECUTING THIS STATEMENT
    {
        // Common initialization
        [self commonInit];

        // Initialize socket
        asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:xmppQueue];
    }
    return self;
}


XMPP を統合したプロジェクトは ARC ではありません。そこで、すべての XMPP ファイルに対して-fobjc-arcを追加しました。XMPP ライブラリが提供するサンプル プロジェクトは、iOS 4.3 シミュレータで正常に動作しています。このエラーの解決を手伝ってくれる人はいますか?
Xcode バージョン: 4.3.3
iOS: iOS 4.3 シミュレーター

4

1 に答える 1

0

XMPP が ARC を必要とし、それを明示的にオフにすると、この種のリンカー エラーが発生します。XMPP ファイルから削除し、プロジェクトのその他のリンカー フラグを-fno-objc-arc追加してみてください。より詳しい情報-fobjc-arc

于 2013-01-28T10:36:14.890 に答える