![](/img/trans.png)
[英]iOS UIApplicationWillEnterForegroundNotification Without Memory Leak?
[英]How to return CFDataRef without memory leak?[ios]
當我返回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內存管理問題。
如何使CFDataRef自動釋放? 方法[data autorelease]不會退出。
只需將其autorelease
轉換為對象指針類型即可調用autorelease
:
-(CFDataRef)MyFunction{
.....
CFDataRef data = CFDataCreate(NULL, buf, bufLen);
free(buf);
return (CFDataRef)[(id)data autorelease];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.