首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone -自动发布CGContextRef?

iphone -自动发布CGContextRef?
EN

Stack Overflow用户
提问于 2010-10-09 00:31:39
回答 2查看 1.4K关注 0票数 1

我有这个方法

代码语言:javascript
复制
-(CGContextRef) createPDFContext:(CGRect)inMediaBox path:(CFStringRef) path
{

   // bla bla
   // at some point I have

   CGContextRef myOutContext = CGPDFContextCreate (dataConsumer, &inMediaBox, NULL);

   // and then I have to return the value
    return myOutContext;
}

问题是myOutContext没有发布,而且会泄漏。

如果在返回之前放置一个CGContextRelease (myOutContext),那么引用将到达调用方时无效.

我该怎么解决呢?执行返回myOutContext自动释放;正如我所怀疑和测试的那样,将无法工作。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-09 02:06:41

因为您的方法的名称是"Create“,因此预期调用方将负责释放该对象。见http://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-103029

更新:因为这是一个方法,而不是一个函数,所以您应该修改它以"new“开头,如http://developer.apple.com/library/ios/documentation/cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-SW1中所描述的那样。

票数 3
EN

Stack Overflow用户

发布于 2010-10-09 02:06:59

您需要遵循内存约定。您的方法中有"create“一词,这意味着调用该方法的人在使用该方法时负责调用该方法的CGContextRelease。如果你不喜欢这个想法,那么你需要找到一些方法来知道打电话的人什么时候结束了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3895181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档