如何查看Xcode调试器中对象内的值?

Bea*_*red 34 iphone debugging xcode ipad ios

我知道这可能听起来像一个愚蠢的问题,因为它在大多数现代IDE中都是一个微不足道的功能,但我正在深入研究iOS开发并熟悉平台和SDK,我无法弄清楚这一点.我对MS Visual Studio有很多经验,我发现Xcode的工作原理非常相似,相比之下它仍然缺乏相当多的功能,但仍然是一个非常好的IDE.在调试时,Xcode的工作方式与Visual Studio非常相似,因为您可以将鼠标悬停在变量上,它将显示其当前值.然而,当谈到对象变量时,它几乎总是只给出地址和扩展箭头,扩展箭头扩展为"NSObject",扩展为"isa",扩展到所有不告诉我任何东西的属性.我习惯了IDE,像Visual Studio一样,足够聪明,可以对我进行一些内省,并为我显示实际对象及其所有直接属性和值.我假设Xcode足够聪明,我只是没有正确使用它.

如果我在涉及对象实例的代码行上设置断点(比如说NSDateComponents实例),我如何查看其属性的值(即年,周,日,小时等)?

在此先感谢您的帮助!

编辑:这是我查看的每个对象的信息截图... 替代文字http://joecrotchett.com/images/misc/example.jpg

bee*_*efy 31

这令人沮丧.调试器必须知道每个对象的结构,但显然不是.但过去常常情况更糟.与NSArray一样,它们是一组对象.调试器不知道具体是什么类型的对象,这是由于Objective-C语言,而不是调试器.

当您深入研究iOS开发时,我认为您会发现Apple在开发方面落后于其竞争对手约15年.那不是开玩笑.但他们正在追赶,相信我,它曾经更糟糕!

  • 虽然一个好的咆哮(我也觉得它),因为它应该是自动的,它可以大大改善一些事情.正确的做法是[实现`description`](http://stackoverflow.com/a/11467498/2547229),如其他答案中所示. (2认同)

Bes*_*esi 5

对于我的数据对象,我倾向于覆盖该description方法并输出一个带有对象摘要的字符串.像这样的东西:

Printing description of myContact:
{name=Homer, lastname=Simpson, ...}
Run Code Online (Sandbox Code Playgroud)

这意味着您可以快速检查调试器中的对象或者NSLog它何时进入控制台.如果该描述包含所有相关数据,您也可以覆盖,isEqual:以便它使用描述来比较两个对象.