我应该做的丢弃一个UIImageView的Image属性来帮助Monotouch中的垃圾收集器?
在我减less内存使用的追求,另一个问题。 我看到, UIImage
和CGImage
可能是我的应用程序中的高内存使用的候选人。 无论我在哪里使用UIImage,我都会尝试将其封装在一个使用块中,以便尽快Dispose()
d。
但是, UIImage
经常以UIImageView.Image
属性结束。 如果我从它的Superview删除UIIImageView
,我应该Dispose()
Image
属性之前,并将其设置为null或这是浪费input?
我应该Dispose()Image属性
快速回答:不可以
很长的回答:
UIImageView.Image
属性, image
select器,保留。 即使你处理它(从pipe理端) 本地 retainCount(Objective-C是引用计数)的UIImage
将仍然高于0和UIImage
(的本机一侧将不会被释放。
当你处理UIImageView
,它将释放它使用的UIImage
(苹果的Objective-C代码),如果retainCount达到0,它将被自然释放。
如果在停止需要UIImage
和处理UIImageView
的时间之间存在很大的延迟,则可能需要将UIImageView.Image
设置为null
。 这将释放(以ObjC的方式,即下降其retainCount一)的UIImage
,如果没有在别处使用,它将(本地)释放。
请注意,如果UIImageView
没有放置,那么将其Image
属性设置为另一个UIImage
将会得到相同的结果(旧的将被释放)。