【问题标题】:Memory Leaks for typedef structtypedef 结构的内存泄漏
【发布时间】:2011-10-04 12:31:04
【问题描述】:

我正在尝试消除内存泄漏。下面是我的代码。

currentTime = CFAbsoluteTimeGetCurrent();

CFTimeZoneRef currentTimeZone = CFTimeZoneCopyDefault();

todaysDate = CFAbsoluteTimeGetGregorianDate(currentTime, currentTimeZone);


[currentTimeZone release];
currentTimeZone = nil;

Warning:::/myclass.m:87: 警告:无效的接收器类型'CFTimeZoneRef'

如何为 typedef const struct 释放内存?

【问题讨论】:

    标签: iphone objective-c memory-leaks


    【解决方案1】:

    对于CFxxxCopyxxx,您应该使用CFRelease

    CFRelease(currentTimeZone);
    

    编辑:

    CoreFoundation 类是 Toll-Free bridged 并且您的原始语句没有泄漏,但只需要一个演员表。我仍然建议您使用 CFRelease,因为您直接使用 CoreFoundation。

    [(NSTimeZone*)currentTimeZone release];
    

    【讨论】:

      【解决方案2】:

      来自文档:

      如果您拥有一件物品,您有责任放弃 完成后的所有权(使用 CFRelease)。

      【讨论】:

      • 他明白他需要释放它,问题是他不知道如何释放它。
      【解决方案3】:

      您正在使用 CoreFoundation 调用,因此您不想使用 Cocoa 的 release,而是要调用:

      CFRelease( currentTimeZone);
      

      为了释放复制的数据。

      【讨论】:

        【解决方案4】:

        尝试释放地址簿毕竟人

        CFRelease(所有人); CFRelease(地址簿);

        这对我有用。

        【讨论】:

          猜你喜欢
          • 2016-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-13
          • 2014-09-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多