3分钟教你看懂并掌握iOS内存管理机制

基础知识


一:OC采用引用计数器对内存进行管理,当一个对象的引用计数为0  则被释放,OC的内存机制可以概括为:谁持有(retain) 谁释放(release)。 retain引用计数 + 1  release反之

引用计数器分为两种:

1:手动引用计数 {

  简称:MRC`

   NSObject *obj = [[NSObject alloc] init];  // 主要初始化后,引用计数就 + 1

   [obj release] //不需要的时候,释放掉,引用计数 - 1

   [obj retain] //如果持有这个对象,引用计数 + 1

    [obj autorelease] //放到自动释放池   当自动释放池释放的时候 用印计数减1

}

2:自动引用计数  {

    简称:ARC

   NSObject *obj;

  {

    obj = [[NSObject alloc]init];

  }

二:retain 和 release是如何实现的呢?


--retain底层调了 sidetable_retain() ,它拥有一个自旋锁,一个引用计数map,这个map的key是对象地址,value是引用计数



--release过程是,查找map,对引用计数减1,如果引用计数小于阈值,则调用SEL_deallc


三、以下开头属于自己持有,retain

alloc 、 new 、copy mutableCopy,内部会对象进行一次retain:

像[NSArry array] 这种是不会持有的,会放在自动释放池上边

你可能感兴趣的:(3分钟教你看懂并掌握iOS内存管理机制)