8

因此,我是 Xcode 的新手,正在开发一个 iOS 项目,并且我在进行最基本的调试方面度过了一段愉快的时光。具体来说,我需要能够在单步执行代码时查看对象的状态(这不是很疯狂吗?),但我终其一生都无法弄清楚如何在 Xcode 中执行此操作。

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

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

在此处输入图像描述

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

更新:所以事情变得更奇怪了!当我突然将变量显示切换到“本地”而不是“自动”时,self.store.storeHours变得完全可导航!我想知道访问正确的“storeHours”实例是否存在故障或其他什么,因为当我现在查看它时,它清楚地识别了数组中的 7 个对象!更不用说这些对象可以像我最初希望的那样扩展。

在此处输入图像描述

4

3 回答 3

8

实例实际上是在自己提供这些信息。您需要为您的自定义类实现description继承自 的方法,NSObject以便它们能够将自己打印为内存地址以外的东西(这是NSObject的实现所做的)。

我不知道你的Hours类有什么属性,但这就像这样简单:

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

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

这也是当您%@NSLog().

于 2013-02-27T00:34:18.070 回答
1

在您的示例中,store.storeHours 是一个空的 NSArray。所以,当然,你不能看里面。

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

 - (NSString*) description

这样的对象Hours可以告诉您有关其内容的更多信息。另请参阅debugDescription

于 2013-02-27T00:35:13.593 回答
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.
}
于 2013-02-27T00:35:06.227 回答