【问题标题】:Inspect an NSImage reference while debugging?调试时检查 NSImage 引用?
【发布时间】:2019-10-03 04:38:38
【问题描述】:

Xcode 中是否有允许您在调试时检查 NSImage 引用的功能?

类似于 webkit 检查器如何让您检查网页中的图像引用。

如果做不到这一点,在使用 NSIMages 时最简单的调试方法是什么?

【问题讨论】:

标签: objective-c cocoa debugging nsimage


【解决方案1】:

更新: 使用 Xcode 5 及更高版本查看 MagerValp 的答案。看起来您可以直接在 Xcode 中预览图像。


不,据我所知,Xcode 中没有这样的功能。如果您的应用程序创建或操作图像,并且您希望查看对 NSImage 的引用背后的数据的可视化表示,则可以将图像转储到文件系统。

只需创建一个类别,将 -(void)dump 添加到 NSImage 中,如下所示:

@interface NSImage (Dump)
- (void)dump;
@end

@implementation NSImage (Dump)
- (void)dump {
    NSBitmapImageRep *imageRep = [[self representations] objectAtIndex: 0];
    NSData *data = [imageRep representationUsingType: NSPNGFileType properties: nil];
    [data writeToFile: @"/tmp/image.png" atomically: NO];
}

@end

现在您可以在代码中的某处设置断点,并通过在调试器的命令行中键入以下内容来调用 NSImage 引用的方法转储:

po [image dump]

源代码中唯一的变化是类别的导入。

【讨论】:

  • 与其假设图像的第一个表示是 NSBitmapImageRep,不如发送图像TIFFRepresentation 并将其写入 .tiff 文件。此外,如果应用程序在沙箱中运行,写入 /tmp 将不起作用。
  • @PeterHosey 我也不会将每个图像都转储到同一路径,但我在示例中这样做是为了保持简单。
【解决方案2】:

从 Xcode 5 开始,您可以使用 QuickLook 来检查 NSImage 或 UIImage,只需在变量视图中选择它并单击眼睛图标(或按空格键)。

另请参阅:Xcode debugging - displaying images

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多