我应该做的丢弃一个UIImageView的Image属性来帮助Monotouch中的垃圾收集器?

在我减less内存使用的追求,另一个问题。 我看到, UIImageCGImage可能是我的应用程序中的高内存使用的候选人。 无论我在哪里使用UIImage,我都会尝试将其封装在一个使用块中,以便尽快Dispose() d。

但是, UIImage经常以UIImageView.Image属性结束。 如果我从它的Superview删除UIIImageView ,我应该Dispose() Image属性之前,并将其设置为null或这是浪费input?

我应该Dispose()Image属性

快速回答:不可以

很长的回答:

UIImageView.Image属性, imageselect器,保留。 即使你处理它(从pipe理端) 本地 retainCount(Objective-C是引用计数)的UIImage将仍然高于0和UIImage (的本机一侧将不会被释放。

当你处理UIImageView ,它将释放它使用的UIImage (苹果的Objective-C代码),如果retainCount达到0,它将被自然释放。

如果在停止需要UIImage和处理UIImageView的时间之间存在很大的延迟,则可能需要将UIImageView.Image设置为null 。 这将释放(以ObjC的方式,即下降其retainCount一)的UIImage ,如果没有在别处使用,它将(本地)释放。

请注意,如果UIImageView没有放置,那么将其Image属性设置为另一个UIImage将会得到相同的结果(旧的将被释放)。