2015-02-18 | code

Objective-C 垃圾回收

目录

#HAPPY NEW YEAR

##垃圾回收

  • 在程序运行时检查是否有不再使用的对象,并自动释放它们所占内存

  • 垃圾回收只作用于objc的实例对象,C 风格的变量,结构体和C
    申请的内存不再垃圾回收范围内。

  • 全局变量和静态变量引用的对象不允许被回收,
    栈内临时变量引用的对象也不允许被回收。这些对象称为根集合

  • finalize方法,对象被回收释放前会被执行

##弱引用

  • 根集合中通过若引用连接的实例对象可被回收
  • 自动nil化

##可通过垃圾回的收动态分配内存

1
2
3
4
5
6
7
8
9
10
void *__strong NSALLocateCollectable(NSUInterger size, NSUInterger options);

//根据指针的声明不同 垃圾回收的规则也不同
//p1不是对象类型 被回收后会变成野指针
static void* p1 = NSALLocateCollectable(SZ, opt);
//p2是弱指针对象 被回收后会被nil
static __weak void* p2 = NSALLocateCollectable(SZ, opt);
//p3是强指针对象 不会被回收
static __strong void* p3 = NSALLocateCollectable(SZ, opt);