当我通过
返回一个CFDataRef
时
(CFDataRef)MyFunction{
.....
CFDataRef data = CFDataCreate(NULL, buf, bufLen);
free(buf);
return data;
}
存在内存泄漏,如何让CFDataRef
自动释放?
方法 [data autorelease] 不会退出。
最佳答案
您不能自动释放 Core Foundation 对象。 (但是,您可以自动释放支持免费桥接的 Core Foundation 对象,例如 CFDataRef;请参阅下面的@newacct 的回答。)
Objective-C 的约定是以 new
开头的方法命名您的方法,以指示调用者负责释放其返回值。例如:
+ (CFDataRef)newDataRef {
return CFDataCreate(...);
}
CFDataRef myDataRef = [self newDataRef];
...
CFRelease(myDataRef);
如果您遵守此命名约定,Xcode 静态分析器将正确标记 Core Foundation 内存管理问题。
关于ios - 如何在没有内存泄漏的情况下返回 CFDataRef?[ios],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8208917/