6

我正在尝试调试在 iOS 5.1 下运行的问题,当我在调试器中停止出现错误的代码并尝试使用调试器打印某些内容时,我收到以下消息:

错误:警告:在声称捕获 Objective-C 对象指针的上下文中停止,但“self”不可用;假装我们在一个通用的上下文中

打扰一下?有人知道我在这里对自己做了什么吗?

代码太复杂了,任何人都不想看——我主要希望有人能告诉我调试器消息的含义。

这过去只是间歇性地失败,但现在大部分都失败了。该操作通常(或可能总是)在我第一次在 iOS 5.1 中尝试时有效,偶尔在第一次之后,显然总是在 iOS 6 中有效。

如果它有助于了解一般上下文......我正在尝试将刚刚编写的对象添加到 ALAssetsGroup 所以这是在非 UI 线程上的完成块中。对于完成块,我有一个看起来很合理的堆栈回溯。失败是因为存储的 ALAssetsGroup 不再具有有意义的值——或者说它的 NSLog 知道它是一个 ALAssetsGroup 对象。这个值被分配在一个地方(并记录下来以便我跟踪它),我可以通过键值观察看到初始分配,我看不到它以 KVO-sorta 的方式被更改过。

4

3 回答 3

4

在构建设置中,设置Precompile Prefix HeaderNO我修复它。

于 2016-04-18T20:37:09.163 回答
2

这是一个调试器错误(是的,想象一下!)

只需重新启动 XCode,这对您来说应该不再是问题了 :)

编辑:

精神!我在想别的东西。

您正在创建一个保留周期,到目前为止,调试器以这种方式对这个特定的保留周期进行分类(正如我所说,一个错误)。

要解决此问题,请创建以下内容的弱副本self

__weak __typeof(self)weakSelf = self;

然后因为self那给你带来麻烦:

更改self.objectweakSelf.object

于 2013-04-05T23:59:05.317 回答
0

在 Xcode 5 和 iOS 6.1 开发中,我也遇到了同样的情况。

我在Release模式下编译,如果有人再次遇到此问题,请检查您是否在Debug模式下编译。

于 2013-11-04T14:55:57.503 回答