如何使用 Xcode 5 可视化调试器快速查看自定义对象?

Posted

技术标签:

【中文标题】如何使用 Xcode 5 可视化调试器快速查看自定义对象?【英文标题】:How can I Quick Look custom objects with Xcode 5 visual debugger? 【发布时间】:2014-01-10 19:21:07 【问题描述】:

Xcode 5 有一个很棒的新功能,您可以将鼠标悬停在变量名上并获得 UIColor、UIImage 甚至 UIBezierPath 的可视化表示。

我隐约记得 WWDC 上的一条评论,其中开发人员可以遵循某些协议或重写任何 NSObject 子类上的某些方法,以参与这个新的调试功能。我很想把它添加到我的一堆模型对象中来帮助我调试。任何人都知道这是否是真实的,或者即使他们在未来的版本中暗示过?

不幸的是,Apple 将此功能称为“快速查看”,因为他们有另一种称为“快速查看”的技术,所以我的搜索结果非常嘈杂,我找不到任何有用的东西。

【问题讨论】:

cough 请参阅 Xcode beta 发行说明 cough 【参考方案1】:

这是 Xcode 5.1 中的一个新功能,有关它的文档可以在 here 找到。简而言之,您覆盖 -(id)debugQuickLookObject 并返回已经支持快速查看的操作系统类型,例如UIImage 或 NSAttributedString(documentation 中的完整类型列表):

- (id)debugQuickLookObject

    UIImage *image = [...];
    // Drawing code here
    return image;

对于 Swift

在撰写本文时有几个选项,都不理想:

符合 CustomPlaygroundQuickLookable,但这仅适用于 Playgrounds(并且需要 Xcode 7/Swift 2)。 使用与 Objective C 相同的方法。这需要将您的类标记为 @objc(或继承 Objective-C 类),因为调用者依赖于选择器。 符合 Reflectable,但这需要您提供一个完整的自定义 MirrorType 以及 QuickLookObject 以及一堆其他属性(而且似乎从 Xcode 7 开始就不起作用?)

【讨论】:

【参考方案2】:

现在 5.1 已经正式发布,我已经发布了这个new blog post 关于此事。

回答您的问题:是的,这确实是新版本 XCode (v5.1) 中提供的一项功能,并且可以通过子类化对象并返回您在调试时想要查看的任何内容来非常轻松地使用-(id)debugQuickLookObject 方法。

【讨论】:

感谢您的评论。更新了答案。 这很快!感谢您为本网站的质量做出贡献:-) 这如何与 C++ 类一起使用? @AdiShavit 也许用 Objective-C 类包装 cpp 类来实现这一点? 我想这对于检查特定的类实例很有用。

以上是关于如何使用 Xcode 5 可视化调试器快速查看自定义对象?的主要内容,如果未能解决你的问题,请参考以下文章

详解Xcode 6的视图调试

如何按地址显示 UIImageView 快速查看?

如何在 Xcode 调试器中查看 NSDictionary 变量的内容?

如何在 Xcode 5 中调试库?

你如何卸载旧的自定义安装的 Xcode?

Xcode如何在预览(Preview)调试中避免与SwiftUI正常运行时环境不一致导致的崩溃