imageWithCGImage和内存

Ada*_*nst 17 cocoa-touch core-graphics

如果我使用[UIImage imageWithCGImage:],传入a CGImageRef,然后释放CGImageRef或者UIImage在解除分配时自己处理吗?

文档并不完全清楚.它说"这种方法不会缓存图像对象."

最初我CGImageRelease在传递给CGImageRef后调用它imageWithCGImage:,但是malloc_error_break在模拟器中发出警告声称发生了双重自由.

out*_*tis 8

根据Cocoa内存管理基本规则,拥有对象应该在不再需要时释放拥有的对象.其他对象负责自己获取和释放所有权.如果一个UIImage对象需要持久但不保留或复制它,那么这是一个UIImage实现中的错误,应该如此报告.


fbr*_*eto 0

我同意你的观点——这个 API 的文档充其量是混乱的。然后,根据您的经验,我得出的结论是,您对两个对象的生命周期负责 - theUIImage和 the CGImageRef。最重要的是,您必须确保 的生命周期CGImageRef至少与 一样长UIImage(出于显而易见的原因)。