在调试时查看Xcode中的对象/属性状态

所以我是Xcode的新手,在iOS项目上工作,我在最基础的调试中度过了一段时间。 具体来说,当我逐步执行代码时,我需要能够查看对象的状态(这不是疯了吗?),但我不能为我的生活找出如何在Xcode中执行此操作。

每当我尝试时,似乎我得到的最远的是一个无法扩展以显示其客观内容的内存地址。 我也无法找出任何方法甚至手动取消引用调试控制台中的指针来查看该对象的状态。

在这里,我试图查看store.storeHours数组的内容,没有任何运气。 事实上,左边的视图告诉我数组中有0个对象,当我尝试扩展它时不会显示任何内容,但是当我po store.storeHours ,控制台显示7个对象,尽管无用地描绘为内存地址。

在此处输入图像描述

请告诉我,我不是疯了,我只是错过了一些东西!

更新:事情变得更加怪异! 当我突然将变量显示切换为“Local”而不是“Auto”时, self.store.storeHours变得完全可导航! 我想知道是否有一个小故障访问正确的“storeHours”实例或其他东西,因为当我现在查看它时,它清楚地识别数组中的7个对象! 更不用说这些物体是可扩展的,正如我原本希望的那样。

在此处输入图像描述

实例实际上是自己提供这些信息。 您需要为自定义类实现inheritance自NSObjectdescription方法,以便它们能够将自己打印为除内存地址之外的其他内容(这是NSObject的实现所做的)。

我不知道您的Hours课程有哪些属性,但这很简单:

 - (NSString *)description { return [NSString stringWithFormat:@"Open: %i Close: %i", self.openTime, self.closeTime]; } 

该方法只需返回一个NSString其中包含您认为在检查对象时看到的重要信息。

当您在NSLog()使用%@格式说明符时,这也是类表示自己的方式。

在您的示例中,store.storeHours是一个空的NSArray。 所以,当然,你无法深入了解它。

为了在调试器中更加清晰,请尝试添加一个方法(inheritance自NSObject)

  - (NSString*) description 

对你的对象,如Hours ,告诉你更多关于他们的内容。 另请参见debugDescription

实行

 -(NSString*)description{ //Return a string in whatever way you like to describe this instance. That is what xcode debugger reads. //This is implemented in the parent to return the address, that's why you see that way. }