自动引用计数释放已分配的Objective-C对象。那些原始变量如char *
?
答案 0 :(得分:8)
自动引用计数实现了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
。