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

时间:2014-01-10 19:21:07

标签: ios objective-c xcode xcode5 quicklook

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

我依稀记得WWDC上的评论,开发人员可以在任何NSObject子类上遵守某些协议或覆盖某些方法,以便参与这个新的调试功能。我很乐意将它添加到我的一些模型对象中以帮助我调试。任何人都知道这是否真实,或者即使他们在未来的版本中暗示过它?

不幸的是,Apple将此功能称为" Quick Look"因为他们有另一项名为" Quick Look"我的搜索结果非常嘈杂,我找不到任何有用的东西。

2 个答案:

答案 0 :(得分:13)

这是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开始不起作用?)

答案 1 :(得分:3)

现在已经正式发布了5.1,我已就这个问题发布了new blog post

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