【问题标题】:Do I need to release an NSString created by CFUUIDCreateString()?我是否需要释放由 CFUUIDCreateString() 创建的 NSString?
【发布时间】:2011-11-14 13:26:54
【问题描述】:

我正在创建一个这样的 NSString,我应该在之后释放它吗?

CFUUIDRef   uuidObj = CFUUIDCreate(nil);
        NSString *device = (NSString*)CFUUIDCreateString(nil, uuidObj);
        CFRelease(uuidObj);

谢谢!

【问题讨论】:

  • hmm.. 惯例是当你在你的方法中做 alloc 或有 Alloc 时,你需要释放它们。
  • 我在这里分配对吗?我在任何地方都没有看到 alloc 这个词,但我假设我分配正确?
  • 如果方法中没有“alloc”,那么你没有分配。您不必在这些对象上调用 release。编辑:除了alloc,还有new、copy、mutableCopy。我将 Apple 内存管理指南作为答案。
  • Kenny,这是一个属于核心基金会内存准则的核心基金会函数,它说关键字“create”实际上确实将所有权委托给调用者!

标签: objective-c ios memory-management nsstring core-foundation


【解决方案1】:

这里是这个函数的文档:

CFUUID Reference - CFUUIDCreateString

它声明所有权遵循The Create Rule

这里有更多答案链接:

【讨论】:

【解决方案2】:
CFUUIDRef theUUID = CFUUIDCreate(NULL);

NSString *s2ndUuid = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, theUUID);

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 2012-12-12
    • 2011-07-01
    • 1970-01-01
    • 2011-06-30
    • 2012-09-17
    • 1970-01-01
    • 2014-09-23
    • 2023-03-04
    相关资源
    最近更新 更多