断点指出“objc_autoreleaseNoPool”

2024-03-26

因此,我正在调试一个应用程序,为其应用程序发布做准备,并且我为“所有异常”启用了通用断点。从那时起,每次我运行该应用程序时,控制台都会打印:

捕获点 2(抛出)挂起的断点 1 - “objc_exception_throw”已解决

objc[11765]:类 __NSCFLocale 的对象 0x8f18ff0 自动释放,没有池 - 只是泄漏 - 中断 objc_autoreleaseNoPool() 进行调试

objc[11765]:类 __NSCFNumber 的对象 0x8f190a0 自动释放,没有池 - 只是泄漏 - 中断 objc_autoreleaseNoPool() 进行调试

objc[11765]:类 __NSCFLocale 的对象 0x8f1fef0 自动释放,没有池 - 只是泄漏 - 中断 objc_autoreleaseNoPool() 进行调试

字面上打印了3次。我不知道这意味着什么,但看起来很糟糕。任何意见,将不胜感激。


New Info

我通过创建一个混合自动释放方法来确定我的问题所在。

我不建议这样做,除非你知道自己在做什么,但这就是我发现的。

+ (void) load; //Method is called outside the original autorelease pool.
+ (void) initialize; // Method is called outside the original autorelease pool.

NSThread 创建自己的线程,被调用的方法应该包装在自动释放池中。

当使用“dispatch_...”命令时,Grand Central Dispatch 负责调整自动释放池。但是,当您手动调度时。您可能想将其包装在自动释放池中。

此外,ARC 不会让您知道自动释放将在池外发生。

因此,如果您使用 ARC 并且知道您将位于自动释放池之外。你对此无能为力。您将希望避免所有方便的方法。

用这个。

[[NSString alloc] initWithFormat:@"%@",myObject];

而不是这个

[NSString stringWithFormat:@"%@",myObject];

这将允许弧系统保留和释放,但将跳过便利方法完成的底层自动释放,因为您不会使用便利方法。

希望有帮助。

原答案

好吧,我觉得这个问题没有得到足够详细的回答。

所传达的信息是

objc[1310]: Object 0x34f720 of class SimpleKeychain autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug

调试器会指出一个可能的断点,以帮助您调试情况。现在,虽然这个断点确实对调试情况没有什么帮助。我认为知道如何将该断点添加到调试器中很重要,因此我花了时间修补它(在搜索互联网并一无所获之后),直到我让它在该错误上中断。

令人烦恼的是,所有错误上的中断都无法捕获此问题,但以下是将断点添加到调试器的步骤。

您要做的第一件事是选择调试器的断点导航器

单击此选项卡

接下来,您看向导航器窗格的底部并按加号按钮

这将允许您手动添加断点。

我选择了一个 C++ 断点,并将消息名称输入到名称文本字段中。

添加此异常后,它实际上确实中断了。

然而,这对于作为 Objective C 开发人员的您可能有用,也可能没有用。这侵入了汇编代码。

不幸的是,它只在线程的调用堆栈上显示了这一点。

结果发现,autorelease问题是因为在dispatch_once调用中调用了一个名为autorelease的类。进一步调查显示+(void)load;类上的方法在其他任何事情之前被调用。这是通过 call_load_methods 函数完成的,并且位于 main 方法的线程之外。

为了纠正这个问题,我只是在调用周围添加了自动释放池包装器。

另一种解决方案可能是在 +(void)load 内添加自动释放池;方法。但这对于我的使用来说已经足够了。

注意:我将其添加到此处的帖子中是因为我不喜欢发现问题并且无法找出最终答案的所有路径。如果调试器告诉您向列出的函数添加断点,那么应该有一些信息可以获取该信息。希望这能减少一些试图寻找答案的人的挫败感。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

断点指出“objc_autoreleaseNoPool” 的相关文章

  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • 断点会停止所有线程吗?

    如果我的程序中有两个线程同时运行 并在其中一个线程上设置了断点 那么当遇到此断点时 另一个线程也会停止 还是会继续执行 我用 Java 编写并使用 NetBeans 断点可以选择它们的行为方式 挂起单个线程或所有线程
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • Xcode 4 调试器代码完成

    首先 很高兴他们尝试在 Xcode 4 中的 gdb 命令提示符上完成代码 但在当前状态下 它使得使用命令提示符来调查目标 c 对象几乎不可能 当我打字时 它自动将单词补全为我不想要的内容 并且如果不手动选择文本并将其删除 然后重新开始 则
  • iOS 11 浮动 TableView 标题

    有一个应用程序包含多个部分 展开 时每个部分有几行 折叠 时没有 每个部分都有一个部分标题 使用以下子类重用它们UITableViewHeaderFooterView等等 到目前为止一切顺利 然后在 iOS 11 中 我使用了可视化调试器
  • 除非在后台线程中获取新的引用,否则存在潜在的引用计数问题

    我有一个second https stackoverflow com questions 28898966 prefer property accessor or kvc style for accessing core data prop
  • 核心数据:为什么必须调用重新加载数据才能使我的应用程序运行?

    我花了整个晚上调试一个简单的应用程序 该应用程序从网络检索一张图像 是的 是的 旨在让我的生活更轻松 并将其显示在表格视图中 我这样做是为了练习学习核心数据 在我修复它之前 错误消息显示如下 2012 09 30 06 16 12 854
  • 如何将 UIImageView 裁剪为自定义形状

    用户是否可以在该位周围画一条虚线 圆圈 UIImageView他们希望裁剪到 然后为UIImageView调整大小到这些点 这有点像 Photoshop 中的套索 选取框效果 更新 从 iOS 8 x 开始 UIImageView 提供了m
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • 将语音添加到自定义 UIMenuController

    我创建了一个自定义UIMenuController in a UIWebView但它似乎摆脱了 说出选择 选项UIMenuController在那之后 所有测试设备上的 偏好设置 中都打开了发言选择选项 并且它出现在其他应用程序中 包括非
  • 使用 Cocoa/OSX 合并/堆叠两个图像

    我有一个 CGImageRef 我们称之为原始图像 和一个透明 png 水印 我正在尝试编写一种方法将水印放置在原始内容之上 并返回 CGImageRef 在 iOS 中 我会使用 UIKit 将它们绘制到上下文中 但这在 OSX 中似乎不
  • 如何更改 UINavigationController 后退按钮名称?

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • UITextView:内存使用量巨大

    我在 UITextView 中遇到了内存使用过多的问题 我正在将 50Kb ascii 文本文件加载到 NSString 中 并将其分配给应用程序中空 UITextView 组件的 text 属性 这立即使我的内存占用量增加了 100Mb
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • Google Cloud Messaging 显示成功消息但未发送 iOS

    所以我在使用 Google Cloud Messaging 时遇到了一个非常奇怪的问题 我遇到的问题是它正在成功注册设备 并且当发送消息时我会收到来自 Google 的成功消息 但设备永远不会收到任何消息 我从 GCM 得到的消息是 res
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓

随机推荐