【问题标题】:ARC lite enabled app crashes on 2nd gen iPod only in Release configuration启用 ARC lite 的应用程序仅在发布配置中在第二代 iPod 上崩溃
【发布时间】:2012-08-07 08:57:03
【问题描述】:

我有一个启用了 ARC lite 的应用程序(启用了 ARC 而没有将弱引用归零,Apple LLVM 4.0)。部署目标设置为 iOS 4.0。它已经在 iOS 4.0 到 5.1.1 上进行了测试。当我使用调试构建并通过 Xcode 安装时,它总是可以正常工作,但是当我使用发布配置创建临时构建时,它总是在使用 iOS 4.2.1 的第二代 iPod 上启动时崩溃,但在其他设备上运行良好(甚至是第三代装有 iOS 4.3 的 iPod)。

崩溃日志说 未找到符号:_objc_retainAutoreleasedReturnValue 并且在调用 main 方法时崩溃(然后是 dyld_stub_binder, dyld::fastBindLazySymbol)

我做了一些搜索,当一个启用了弧的库包含在没有弧的项目中时,通常会发生这种崩溃。但在我的情况下,整个项目都启用了弧。

有什么线索吗?

非常感谢。

[编辑] 更新:我可以使用 NSLog 来调试临时构建。

main.m 是这样的:

int main(int argc, char *argv[]) {
    NSLog(@"ok before entering autorelease pool");
    @autoreleasepool {
        NSLog(@"ok after entering autorelease pool");
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([XXX class]));
    }
}

NSLog(@"ok after into autorelease pool") 调用成功,但 application:didFinishLaunchingWithOptions: 从未进入。

【问题讨论】:

  • 您几乎可以肯定地在调试器中发生崩溃,方法是更改​​您的方案的调试操作以使用发布版本。我不知道这是否会有所帮助。
  • 谢谢约瑟夫。我正在尝试这样做,但它无法通过抱怨“没有找到包含任何钥匙串签名证书的未过期的配置文件”来安装,即使我更改了项目设置以让“发布”使用开发人员配置文件。也许调试模式不适用于发布版本?
  • 绝对有效。您的发布版本的代码设计设置一定仍然存在问题;使它们与调试版本相同,它将起作用。
  • 嗯,我重新启动了计算机,错误消失了。它尝试在设备上安装应用程序,但随后失败并出现错误:“无法启动“XXX”超时等待应用程序启动”。应用程序到达加载屏幕,但在那里退出,类似于我运行临时构建时。
  • 在我上一条评论之后.. 实际上它只是 Xcode 错误。当我通过 Xcode(带有发布配置)安装并从设备本身启动时,该应用程序可以启动并正常工作。

标签: iphone ios ipad


【解决方案1】:

好像和命令行构建工具有关。我曾经使用 xcodebuild 命令来归档临时构建: xcodebuild -scheme myscheme 清理构建存档

遇到了这个崩溃。

然后我尝试从 Xcode 存档,即席构建实际上在所有设备上都可以正常工作。太奇怪了(请记住,临时构建的命令行适用于比 iPod 第二代更新的设备)。

现在我将只使用 Xcode 中的存档按钮。但我在 Apple 开发者论坛上发布了这个问题: https://devforums.apple.com/message/711334

【讨论】:

    【解决方案2】:

    我的回答:我是如何摆脱同样的问题的。

    步骤:

    1.首先在代码符号列中进行所有更改,并确保所有设置在项目选项卡和目标选项卡中都与您想要的一样。

    2.只需在第一步中进行所有设置,例如选择正确的配置并指定准确的捆绑标识符,然后现在让 xcode 退出。

    3.在 2 步之后,只需重新启动计算机,然后为您在第一步中选择的配置文件进行构建。

    现在它工作正常,希望这个答案也可以帮助你。无论如何,它是我对上述问题的解决方案.....:)

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 2011-08-05
      • 1970-01-01
      • 2012-10-11
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      相关资源
      最近更新 更多