[关闭]
@chenbinghua 2015-09-12T10:32:32.000000Z 字数 1040 阅读 1295

iOS开发之内存管理手记

iOS笔记


内存管理对象

存放在堆的OC对象

内存管理机制

引用计数器

官方规定的内存管理原则

谁创建谁release

set方法的内存管理

  1. // retain关键字
  2. - (void)setCar:(Car *)car
  3. {
  4. if (car != _car)
  5. {
  6. // 对当前正在使用的车(旧车)做一次release
  7. [_car release];
  8. // 对新车做一次retain操作
  9. _car = [car retain];
  10. }
  11. }
  12. - (void)dealloc
  13. {
  14. // 当人不在了,代表不用车了
  15. // 对车做一次release操作
  16. [_car release];
  17. [super dealloc];
  18. }

错误写法

  1. p.dog = [[Dog alloc] init];
  2. [[Dog alloc] init].weight = 20.8;
  3. // MRC下的正确写法
  4. Dog *dog = [[Dog alloc] init];
  5. p.dog = dog;
  6. [dog release];
  7. Dog *dog = [[Dog alloc] init];
  8. dog.weight = 20.8;
  9. [dog release];

@property参数

ARC

当ARC开启时,编译器将自动在代码合适的地方插入retain, release和autorelease,而作为程序猿,完全不需要担心编译器会做错(除非开发者自己错用ARC了)。

在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和autorelease三个关键字就好~这是ARC的基本原则。

ARC的注意点和优点

ARC的判断原则

只要还有一个强指针变量指向对象,对象就会保持在内存中

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注