0

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

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

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

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

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

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

提前致谢。

4

2 回答 2

0

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

于 2009-10-14T15:59:06.860 回答
0

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

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

于 2009-10-15T15:56:58.270 回答