前言
1)ARC下的单个对象的内存管理 在ARC的机制下,当1个对象没有任何的强指针指向它的时候,这个对象就会被立即回收。 什么时候1个对象就没有强指针指向它了呢? 例如:有一个Person类 @interface Person : NSObject @end
@implementation Person – (void)dealloc { NSLog(@“人挂了。。。”); } @end
#import #import “Person.h” int main() { if(1) { Person *p1 = [Person new]; __weak Person *p2 = p1 ; } return 0; 在if语句的大括弧结束的时候,强指针p1和弱指针p2就都被销毁了,没有强指针指向Person对象了,Person对象就被销毁了。 2)在例如: int main() { __weak Person *p2 = nil; if(1) { Person *p1 = [ Person new]; p2 = p1; } return 0; } if语句的大括弧结束的时候,强指针p1被销毁了,弱指针p2还没被销毁,Person对象没有强指针指向它了,也就被销毁了。。。