我正在尝试调试在iOS 5.1下运行的问题,当我在调试器中停止获取错误的代码并尝试使用调试器打印内容时,我收到消息:
对不起?有人知道我在这里做了什么吗?错误:警告:在声称捕获的上下文中停止 Objective-C对象指针,但'self'不可用;假装我们 在一般情境中
代码太复杂了,任何人都不希望看到它 - 我大多希望有人能告诉我调试器消息的含义。
这曾经只是间歇性地失败但现在大多数都失败了。这个操作一般(或者可能总是)在我第一次尝试在iOS 5.1中运行时,偶尔在第一次之后,并且显然总是在iOS 6中运行。
如果有助于了解一般情况...... 我正在尝试将一个刚编写的对象添加到ALAssetsGroup,因此这是在非UI线程上的完成块中。对于完成块,我有一个看似合理的堆栈回溯。 失败是因为存储的ALAssetsGroup不再具有有意义的值 - 或者说它的NSLog知道它是ALAssetsGroup对象。这个值在一个地方分配(并记录,所以我跟踪它),我可以看到键值观察的初始分配,我不认为它是以KVO-sorta方式改变的。
答案 0 :(得分:4)
在构建设置中,将Precompile Prefix Header
设置为NO
为我修复了它。
答案 1 :(得分:2)
这是一个调试器错误(是的,想象一下!)
只需重新启动XCode,它就不再适合您了:)
修改强>
琪!我在考虑其他事情。
您正在创建一个保留周期,截至目前,调试器以这种方式对此特定保留周期进行分类(正如我所说,一个错误)。
要解决此问题,请创建self
的弱副本:
__weak __typeof(self)weakSelf = self;
然后,self
给你带来麻烦:
将self.object
更改为weakSelf.object
答案 2 :(得分:0)
Xcode 5和iOS 6.1开发对我来说也是如此。
我正在 Release 模式下编译,如果有人再次遇到此问题,请检查您是否在 Debug 模式下编译。