ios - 我是否应该处理 UIImageView 的 Image 属性以帮助 Monotouch 中的垃圾收集器?

标签 ios garbage-collection uikit xamarin.ios

关于我减少内存使用的追求,另一个问题。 我看到 UIImageCGImage 可能是我应用程序中高内存使用率的候选对象。 无论我在哪里使用 UIImage,我都会尝试将它包装在一个 using block 中,以便尽快将其Dispose()

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

最佳答案

am I supposed to Dispose() the Image property

快速回答:不。

长答案:

UIImageView.Image 属性,image选择器,被保留。即使您(从托管端)处置它,UIImagenative retainCount(Objective-C 是引用计数)仍将高于 0 并且( native 端of the) UIImage 不会被释放。

当您处理 UIImageView 时,它会释放它使用的 UIImage(Apple 的 Objective-C 代码),如果 retainCount 达到 0 ,它将被 native 释放。

如果在您不再需要 UIImage 和您处理 UIImageView 之间有很大的延迟,那么您可能需要设置UIImageView.Imagenull。这将释放(以 ObjC 的方式,即将其 retainCount 减一)UIImage,如果它没有在其他地方使用,它将被(本地)释放。

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

关于ios - 我是否应该处理 UIImageView 的 Image 属性以帮助 Monotouch 中的垃圾收集器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10427467/

相关文章:

ios - 源代码管理 merge 按钮灰显?

ios - 创建顶部有三角形的 UIView

ios - 如何使用 iOS 上的约束将 View 附加到键盘顶部边缘

ios - swift:强制类型修饰符 "!"- 为什么它在 UIKit API 中使用(现在不合时宜)

c# - C# 中 coSTLy 对象的内存管理/缓存

iphone - 有没有办法制作一个仍为 "be there"的不可见 UIButton 并捕获 UIImageView 的触摸事件?

ios - 使用 arc4random 的更好方法

ios - 在闭包外访问时变量的值发生变化

memory-leaks - 在 Lua 中丢失引用

java - 执行 GC 时,在安全点应用程序线程暂停期间导致 vmop 时间增加的原因