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

标签 ios objective-c xcode debugging

所以我是 Xcode 的新手,正在处理一个 iOS 项目,我在最基本的调试方面遇到了很多麻烦。具体来说,我需要能够在逐步执行代码时查看对象的状态(这并不疯狂,是吗?),但我终究无法弄清楚如何在 Xcode 中执行此操作。

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

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

enter image description here

请告诉我我没有疯,我只是错过了什么!

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

enter image description here

最佳答案

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

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

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

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

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

关于ios - 调试时在 Xcode 中查看对象/属性状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102082/

相关文章:

iOS 相机 : `AVCaptureAudioDataOutput` activate audio session on the fly, 避免背景音乐卡顿

Objective-C - 根据用户输入的查询搜索街道

ios - RuTube MPMoviePlayerController initWithContentURL :

xcode - Info.plist 和 [app name]-Info.plist 有什么区别?

iphone - 应用程序重启后如何查看 iphone 日志记录(NSLog)?

ios - 解析 URL 字符串以获取键值的最佳方法?

iphone - 将 NSString 转换为 NSData 而不更改数据

iphone - Objective-C 排序字符串日期数组

objective-c - echo 不适用于 NSTask 和 readInBackgroundAndNotify

ios - WatchKit 模糊的背景图像