关于我减少内存使用的追求,另一个问题。
我看到 UIImage
和 CGImage
可能是我应用程序中高内存使用率的候选对象。
无论我在哪里使用 UIImage,我都会尝试将它包装在一个 using block 中,以便尽快将其Dispose()
。
但是,UIImage
通常以 UIImageView.Image
属性结束。
如果我从它的 Superview 中删除 UIIImageView
,我是否应该 Dispose()
之前的 Image
属性并将其设置为 null 或者这是浪费打字?
最佳答案
am I supposed to Dispose() the Image property
快速回答:不。
长答案:
UIImageView.Image
属性,image
选择器,被保留。即使您(从托管端)处置它,UIImage
的 native retainCount(Objective-C 是引用计数)仍将高于 0 并且( native 端of the) UIImage
不会被释放。
当您处理 UIImageView
时,它会释放它使用的 UIImage
(Apple 的 Objective-C 代码),如果 retainCount 达到 0 ,它将被 native 释放。
如果在您不再需要 UIImage
和您处理 UIImageView
之间有很大的延迟,那么您可能需要设置UIImageView.Image
到 null
。这将释放(以 ObjC 的方式,即将其 retainCount 减一)UIImage
,如果它没有在其他地方使用,它将被(本地)释放。
请注意,如果未释放 UIImageView
,则将其 Image
属性设置为另一个 UIImage
将得到相同的结果(旧的一个将被释放)。
关于ios - 我是否应该处理 UIImageView 的 Image 属性以帮助 Monotouch 中的垃圾收集器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10427467/