调试器错误地将对象显示为nil,直到使用了object

时间:2010-12-02 17:06:03

标签: objective-c xcode

我在这些行之后立即设置断点:

NSInteger index = [self.aCombobox indexOfSelectedItem];
NSString *nameSelected = [self.names objectAtIndex:index]; 

如果我然后将鼠标滑过nameSelected,它会显示一个值“nil。”如果我在调试器控制台中键入“po nameSelected”,它会显示字符串“似乎不指向有效对象”。

所以我添加了一个NSLog来打印nameSelected,它正确地打印了字符串。并且,一旦调试器低于NSLog线,如果我将鼠标滑过nameSelected,它将显示正确的值。

为什么调试器会以这种方式运行?这使得识别真正问题的位置变得更加困难。

3 个答案:

答案 0 :(得分:2)

Me(以及数百万其他iOS开发人员)始终如一地执行此操作并且没有任何问题。虽然它似乎是一个愚蠢的查询,你是否在调试时修改了源代码(特别是添加了代码行)?如果是这样,当源不同步时,调试器仍然指向.o文件中的第X行。

答案 1 :(得分:1)

真正的答案是汤米对我这个老问题的评论。这是一个Xcode newby的错误。很抱歉离开这里很久了,

答案 2 :(得分:0)

实际上,我们的经验是,启用iOS的GDB就像任何东西一样。我们经常观察到这些类型的错误。 可能有一个解决方案,但大多数时候我们只是把它搞砸了并采用了NSLog Debugging。