gpt4 book ai didi

ios - dealloc 后应用程序在 iOS5 上崩溃

转载 作者:行者123 更新时间:2023-11-28 18:43:45 25 4
gpt4 key购买 nike

我在 iOS 5 上运行一个在 iOS 4.3 上运行良好的应用程序时遇到问题。我还没有将项目转换为 ARC,因此应该完全禁用 ARC,据我所知,应用程序应该像手动引用计数一样运行?它目前在 dealloc 方法之后崩溃(在 [super dealloc] 被调用之后),更确切地说它在这部分获得了 EXC_BAD_ACCESS:

int main(int argc, char *argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

int retVal = UIApplicationMain(argc, argv, nil, nil); //EXC_BAD_ACCESS

[pool release];

return retVal;

我曾尝试转换为 ARC,但目前这是不可能的,因为我有不受支持的第三方 JSON 库。我试图将编译器标志放在所有适当的文件上:

-fno-objc-arc

然而,这在尝试转换为 ARC 时没有任何区别,因为出现与以前相同的错误,而且 Xcode 在尝试失败后从文件中删除标志。

有人知道这是怎么回事吗?我会假设如果 ARC 被禁用,那么诸如 release 之类的调用应该没问题吗?

最佳答案

听起来像是从 iOS 4 到 iOS 5.0 的框架更改意味着您正在点击悬空指针。 main 中的 EXEC_BAD_ACCESS 通常是自动释放池中对象已经被释放的标志,即它已被过度释放或保留不足。

我在我的一个项目中遇到了与 UIImagePickerController 相同的问题。

僵尸是调查自动释放问题的好方法。要在 Xcode 4.1 或 4.2 中打开僵尸,在“运行”阶段的“诊断”选项卡上有一个名为“启用僵尸对象”的复选框。

当您在之前点击 EXEC_BAD_ACCESS 的控制台中出现异常时,启用 Zombies。此异常将告诉您有关该对象的信息。

关于ios - dealloc 后应用程序在 iOS5 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com