我试图消除内存泄漏。以下是我的代码。
currentTime = CFAbsoluteTimeGetCurrent();
CFTimeZoneRef currentTimeZone = CFTimeZoneCopyDefault();
todaysDate = CFAbsoluteTimeGetGregorianDate(currentTime, currentTimeZone);
[currentTimeZone release];
currentTimeZone = nil;
警告::: / myclass.m:87:警告:无效的接收器类型'CFTimeZoneRef'
如何为typedef const struct释放内存?
答案 0 :(得分:6)
使用CFxxxCopyxxx
,您应该使用CFRelease
。
CFRelease(currentTimeZone);
修改强>
有CoreFoundation个类Toll-Free bridged并且您的原始声明没有泄漏但只需要演员。我仍然建议您使用CFRelease
,因为您直接使用CoreFoundation。
[(NSTimeZone*)currentTimeZone release];
答案 1 :(得分:0)
来自文档:
如果你拥有一个物品,你有责任放弃 完成后的所有权(使用CFRelease)。
答案 2 :(得分:0)
您正在使用CoreFoundation调用,因此您不想使用Cocoa的release
,而是要调用:
CFRelease( currentTimeZone);
以释放复制的数据。
答案 3 :(得分:0)
在所有人之后尝试重新发送地址簿
CFRelease(allPeople); CFRelease(地址簿);
这对我有用。