所以我听说new
alloc
和copy
在您负责的堆上创建新内存。我想确保核心图形中的C函数也是如此:
myIvar=CGDataProviderCopyData(CGImageGetDataProvider(cgImage));
这是否意味着我必须稍后发布它,如:
CFRelease(myIvar);
换句话说,如果我稍后重新分配myIvar
没有发布声明,它会导致泄密吗?
关于评论,我已上传此屏幕截图:
注释掉的线很好用。在这一行之前,我有m_parsedImage = CGDataProviderCopyData(CGImageGetDataProvider(cgImage));
也可以正常工作。
答案 0 :(得分:1)
是的,按照惯例,名称中包含“复制”或“创建”的任何函数都会返回必须释放的内容。
在这种情况下,快速查看CGDataProviderCopyData
的文档会显示:
返回值
包含提供程序数据副本的新数据对象。您有责任释放此对象。
在发布此类问题之前,请花点时间查看文档。你会节省很多时间。 :)