【问题标题】:Objective C - NSImageView, NSImage, NSBitmapImage rep object lifecycle?Objective C - NSImageView、NSImage、NSBitmapImage 代表对象生命周期?
【发布时间】:2009-10-14 13:54:24
【问题描述】:

我已经构建了一个视频查看器,它是一个 Safari 插件,可以显示来自网络设备的视频。查看器读取位图图像,准备它们,并将它们设置在 NSImageView 对象上,如下所示:

NSBitmapImage *bmImg = [[NSBitmapImage alloc] initWithBitmapDataPlanes: . . .]
NSImage *img = [[NSImage alloc] init];
[img addRepresentation:bmImg];

图像通过主线程上的“setImage”添加到 NSImageView。视频显示正常。

我的问题是,通过“setImage”设置下一个图像的行为不应该导致先前图像及其关联的位图图像被释放并随后释放吗?

我需要自己对分配的图像执行 [img release] 吗?

我是否需要从 img 中删除图像代表并发布它?

提前致谢。

【问题讨论】:

  • 向我们展示您的真实代码。没有 NSBitmapImage 这样的东西;我假设您的意思是 NSBitmapImageRep。此外,将其格式化为代码,而不是与问题的其余部分混合。

标签: cocoa garbage-collection webkit nsimage nsimageview


【解决方案1】:

您实际上需要阅读 Cocoa 内存管理指南。它会回答你所有的问题。

【讨论】:

    【解决方案2】:

    在发帖之前,我确实阅读了 Cocoa 内存管理指南。尽管该指南在我再次阅读后确实有所帮助,但这并不是一个非常明显的解决方案。

    解决方案是在将 NSImage 和 NSBitmapImageRep 实例发送到 NSImageView 上的“setImage”后释放它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      相关资源
      最近更新 更多