2011-07-13 42 views
4

内存泄漏余米试图消除内存泄漏。以下是我的代码。的typedef结构

currentTime = CFAbsoluteTimeGetCurrent(); 

CFTimeZoneRef currentTimeZone = CFTimeZoneCopyDefault(); 

todaysDate = CFAbsoluteTimeGetGregorianDate(currentTime, currentTimeZone); 


[currentTimeZone release]; 
currentTimeZone = nil; 

警告:::/myclass.m:87:警告:无效的接收器类型 'CFTimeZoneRef' 的类型定义常量结构

如何释放内存?

回答

6

随着你应该使用CFReleaseCFxxxCopyxxx

CFRelease(currentTimeZone); 

编辑:

CoreFoundation类是Toll-Free bridged和你原来的陈述并没有泄漏,但只需要一个演员。我仍然会建议使用CFRelease因为你是直接的CoreFoundation工作。

[(NSTimeZone*)currentTimeZone release]; 
0

从文档:

如果你拥有一个对象,它是你的责任,放弃 所有权(使用CFRelease),当你用它完成。

+0

他明白,他需要释放它,问题是,他不知道该如何将其释放。 – gaige

+0

“...(使用CFRelease)......” – dasdom

0

您正在使用的CoreFoundation调用,因此而不是使用Cocoa的release,你会想拨打:

CFRelease(currentTimeZone); 

为了释放复制的数据。

0

试allPeople

CFRelease(allPeople)后relesing地址簿; CFRelease(地址簿);

这为我工作。