【发布时间】:2012-01-07 05:56:21
【问题描述】:
自动引用计数释放已分配的 Objective-C 对象。像char * 这样的原始变量呢?
【问题讨论】:
标签: objective-c memory memory-management malloc automatic-ref-counting
自动引用计数释放已分配的 Objective-C 对象。像char * 这样的原始变量呢?
【问题讨论】:
标签: objective-c memory memory-management malloc automatic-ref-counting
自动引用计数为 Objective-C 对象和块实现自动内存管理,使程序员无需显式插入保留和释放。它不提供循环收集器;用户必须明确地管理生命周期。
和
可保留对象指针(或可保留指针)是可保留对象指针类型(可保留类型)的值。可保留对象指针类型共有三种:
- 块指针(通过将插入符号 (^) 声明符符号应用于函数类型而形成)
- Objective-C 对象指针(id、Class、NSFoo* 等)
- 用 __attribute__((NSObject)) 标记的 typedef
其他指针类型,例如 int* 和 CFStringRef,不受 ARC 语义和 限制。
【讨论】:
ARC 只直接释放 ObjC 对象(不是char*、void*、int* ...)。然而 ARC 仍然调用对象的 dealloc 方法。因此,如果您有一个 ObjC 对象,该对象 malloc 占用了一些内存并将一个 char* 指向它,并且 dealloc 方法调用 free ,该内存仍将被正确处理。
Core Foundation 对象也是如此,您仍然需要CFRelease 它们。即使是免费的桥接 CF 类型也需要手动调用 CFRelease。
【讨论】: