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

时间:2013-02-27 00:29:34

标签: ios objective-c xcode debugging

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

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

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

enter image description here

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

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

enter image description here

3 个答案:

答案 0 :(得分:8)

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

我不知道你的NSObject类有哪些属性,但这很简单:

Hours

该方法只需要返回一个- (NSString *)description { return [NSString stringWithFormat:@"Open: %i Close: %i", self.openTime, self.closeTime]; } ,其中包含您认为在检查对象时看到的重要信息。

当您在NSString中使用%@格式说明符时,这也是类的表示方式。

答案 1 :(得分:1)

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

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

 - (NSString*) description

指向Hours等对象,告诉您有关其内容的更多信息。另请参阅debugDescription

答案 2 :(得分:0)

实施

-(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.
}