OC 内存管理

7.0之后,新建的工程默认都是ARC的(ARC:自动管理内存)


Student 类:

       Student * stu = [[Student alloc] init];

打印当前对象的引用计数 使用retainCount方法

       NSLog(@"结果是%lu",[stu retainCount]);//lu 无符号

      [stu retain];//对当前的对象的引用计数+1

      [stu release]; //使当前对象的引用计数- 1


      [stu autorelease];//当前不-1,在未来某个地方引用计数-1

      NSLog(@"结果是%lu",[stu retainCount]);


内存管理的基本原则:

1.内存的所有权
只有对内存有所有权的指针,才能够release,改变引用计数
alloc retain copy 都能使对象获得内存的所有权
release autorelease 都能使对象放弃内存的所有权


2.有创建就有回收,有+1就有-1;


3.引用计数的概念


4.在一个方法/类中,内存的引用计数要保持平衡(加多少,减多少);


5.dealloc方法 在对象的引用计数为0时,系统强制调用,用于回收内存


6.属性的内存管理 对象类型的属性,需要在dealloc中释放一次


7.自动释放池 负责释放池子范围内所有被标记为autorelease的对象;自动释放池:@autoreleasepool{}
如果是NSAutoreleasePool对象创建的池子,使用drain可以清空池子里的所有对象


8.构造器的内存管理
在返回这个对象的时候,使用autorelease






本文出自 “Ghost霍的��博客” 博客,谢绝转载!

你可能感兴趣的:(内存管理原则,对象的引用计数)