在Xcode 6.1中的调试器变量监视列表中看不到NSArray的内容

时间:2014-12-09 19:39:37

标签: ios objective-c ios8 xcode6

遇到一个奇怪的问题,在Xcode 6.1上调试一些代码,其中我正在调试的NSArray的值有对象,但是在检查单个元素时调试器没有显示任何内容。这是我在调试器中看到的......

enter image description here

使用以下代码行填充kPatternDifficulties数组...

NSArray *kPatternDifficulties = [self.definition objectForKey:@"pattern-difficulties"];

通常当我看到类似这样的东西时,我发现一个很好的粗略检查是,是否​​为正在运行的特定方案/配置启用了优化。在这种情况下,关闭优化没有做任何事情。作为下一步,我认为这可能是一个内存问题,也许self.definition的内容会提前自动释放,所以我尝试将上面的行转换为副本而不是代理...

NSArray *kPatternDifficulties = [NSArray arrayWithArray:[self.definition objectForKey:@"pattern-difficulties"]];

这很有效。我可以正确地看到NSArray的所有元素,所以我有一个很棒的解决方案。我确实有一些问题,比如......

  • 这只会导致iOS8设备崩溃。以前的iOS版本似乎无声地失败,因为iOS8中的内存管理发生了变化,这可能是原因造成的?
  • 围绕此类案件的一般惯例/标准是什么?是否可以分配给变量或者副本是否更正确?我正在读取一个由对象本身保留的self.definition的NSArray,所以我不认为它应该被释放,直到对象被释放,但似乎确实存在访问这个内存的问题原样。

0 个答案:

没有答案