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

Lig*_*bow 8 xcode objective-c quicklook ios xcode5

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

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

不幸的是,Apple将此功能称为"快速查看",因为他们有另一项称为"快速查看"的技术,我的搜索结果非常嘈杂,我找不到任何有用的功能.

Pat*_*pel 13

这是Xcode 5.1中的一项新功能,可以在此处找到相关文档.简而言之,您覆盖-(id)debugQuickLookObject并返回已支持Quick Look的操作系统类型,例如UIImage或NSAttributedString(文档中的完整类型列表):

- (id)debugQuickLookObject
{
    UIImage *image = [...];
    // Drawing code here
    return image;
}
Run Code Online (Sandbox Code Playgroud)

对于Swift:

写作时有一些选择,没有理想的选择:

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