ARC会为您释放malloc的内存吗?

时间:2011-11-27 09:18:19

标签: objective-c memory memory-management malloc automatic-ref-counting

自动引用计数释放已分配的Objective-C对象。那些原始变量如char *

2 个答案:

答案 0 :(得分:8)

不符合llvm document on ARC

  

自动引用计数实现了Objective-C对象和块的自动内存管理,使程序员免于明确插入保留和释放的需要。它不提供循环收集器;用户必须明确管理生命周期。

  

可保留对象指针(或可保留指针)是可保留对象指针类型的值(可保留类型)。有三种可保留的对象指针类型:

     
      
  • 块指针(通过将插入符号(^)声明符sigil应用于函数类型而形成)
  •   
  • Objective-C对象指针(id,Class,NSFoo *等)
  •   
  • 使用__attribute __((NSObject))
  • 标记的typedef   
     

其他指针类型(例如int *和CFStringRef)不受ARC的语义和      限制。

答案 1 :(得分:3)

ARC直接仅发布ObjC对象(不是char*void*int* ...)。但是ARC仍然调用对象的dealloc方法。因此,如果你有一个ObjC对象,malloc会占用一些内存并指向一个char *,并且dealloc方法会自由调用该内存仍然会被正确处理掉。

对于Core Foundation对象,您仍然需要CFRelease它们。即使免费的桥接CF类型也需要手动拨打CFRelease