【问题标题】:XMPP not working on iOS 4.3 projectXMPP 不适用于 iOS 4.3 项目
【发布时间】:2012-10-13 05:33:02
【问题描述】:

在我的 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 模拟器

【问题讨论】:

    标签: objective-c ios5 xcode4.3 ios4 xmppframework


    【解决方案1】:

    如果 XMPP 需要 ARC,而您明确将其关闭,则会发生这种链接器错误。 尝试从 XMPP 文件中删除 -fno-objc-arc 并在项目的 Other Linker Flags 中添加 -fobjc-arcMore info

    【讨论】:

    • 抱歉,我已经针对所有 XMPP 文件添加了 -fobjc-arc。但问题依然存在
    • 但这是一个编译时间步骤,而不是链接时间,对吧?如果我理解正确,您的项目不是 ARC,因此默认情况下不会链接 ARC 库。如果您的某些类确实需要 ARC,则需要显式链接它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多