And*_*rew 16 xcode breakpoints objective-c ios
因此,我正在为其应用程序的预制调试应用程序,因此我启用了"所有例外"的通用断点.从那时起,每次运行应用程序时,控制台都会打印:
Catchpoint 2(throw)待定断点1 - "objc_exception_throw"已解决
objc [11765]:类__NSCFLocale的对象0x8f18ff0自动释放,没有池到位 - 只是泄漏 - 在objc_autoreleaseNoPool()中断以调试
objc [11765]:类__NSCFNumber的对象0x8f190a0自动释放,没有池到位 - 只是泄漏 - 在objc_autoreleaseNoPool()中断以调试
objc [11765]:类__NSCFLocale的对象0x8f1fef0自动释放,没有池到位 - 只是泄漏 - 在objc_autoreleaseNoPool()中断以调试
字面打印3次.我不知道这意味着什么,但看起来很糟糕.任何意见,将不胜感激.
The*_*der 35
新信息
我通过创建一个混合自动释放方法来确定我的问题所在.
除非你知道自己在做什么,否则我不建议这样做,但这是我发现的.
+ (void) load; //Method is called outside the original autorelease pool.
+ (void) initialize; // Method is called outside the original autorelease pool.
Run Code Online (Sandbox Code Playgroud)
NSThread创建自己的线程,被调用的方法应该包含在自动释放池中.
使用"dispatch _..."命令时,Grand Central Dispatch负责调整自动释放池.但是,当您手动调度时.您可能希望将其包装在自动释放池中.
此外,ARC不会让您知道自动释放将在池外发生.
因此,如果您使用ARC并且知道您将在自动释放池之外.你无能为力.您将希望避免所有便利方法.
用这个.
[[NSString alloc] initWithFormat:@"%@",myObject];
Run Code Online (Sandbox Code Playgroud)
而不是这个
[NSString stringWithFormat:@"%@",myObject];
Run Code Online (Sandbox Code Playgroud)
这将允许弧系统保留和释放,但是将跳过由方便方法完成的基础自动释放,因为您将不使用便捷方法.
希望有所帮助.
原始答案
好吧,我觉得这个问题没有得到足够详细的回答.
提出的信息是
objc[1310]: Object 0x34f720 of class SimpleKeychain autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug
Run Code Online (Sandbox Code Playgroud)
调试器指出一个可能的断点,它将帮助您调试情况.现在虽然这个断点确实没有帮助调试情况.我认为重要的是知道如何将该断点添加到调试器中,因此我花时间修补它(在搜索互联网并找不到任何内容之后),直到我得到它来打破该错误.
有点烦人的是,所有错误的中断都没有捕获到这一点,但这里是将断点添加到调试器的步骤.
您要做的第一件事是选择调试器的断点导航器

单击此选项卡

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

这将允许您手动添加断点.
我选择了一个C++断点,并在名称文本字段中输入了消息名称.

添加此异常之后,它实际上已经破坏了.
但是,作为客观的开发人员,这可能对您有用,也可能没有用.这突破了汇编代码.

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

事实证明,自动释放问题是因为在dispatch_once调用中有一个名为autorelease的类.进一步调查显示+(空)负荷; 在其他任何事情之前调用类的方法.这是通过call_load_methods函数完成的,并且位于main方法的线程之外.

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

另一个解决方案可能是在+(void)加载中添加自动释放池; 方法.但这足以满足我的用途.
注意:我将此添加到此处的帖子,因为我不喜欢找到问题而无法找出所得答案的所有路径.如果调试器告诉您向列出的函数添加断点,那么应该在某处获取某些信息以获取该信息.希望这会降低一些试图找到这个答案的人的挫败感.
| 归档时间: |
|
| 查看次数: |
7191 次 |
| 最近记录: |