对Objective-C内存管理策略的理解

Objective-C的内存管理策略是基于“拥有关系”的。凡是被“拥有”的对象,不会被回收。对内存的管理,实际上就是对“拥有”关系的管理。

  1. 通过开头名称为”alloc”,”new”,”copy”,”mutableCopy”的方法创建的对象,你对其有“拥有”关系。
  2. 对于你想保持的对象,通过retain取得其“拥有”关系。
  3. 你需要负责在合适的时机,释放你“拥有”的对象。
  4. 你不能释放你没有“拥有”的对象。

总的来说就是,是你的(alloc, new, copy, mutableCopy, retain)你释放(release, autorelease),不是你的不要释放。

补充:

  1. 父元素应该强引用子元素,而子元素应该弱引用父元素
  2. 从容器(array, set, dictionary)中获取元素后,在容器移除这个元素前,应做retain。因为容器移除元素时,发送给元素的消息是release 而不是 autorelease。
  3. 从父元素中获取子元素后,在父元素被释放前,最好做一下retain。因为父元素对子元素的释放,很有可能是release而不是autorelease。

你可能感兴趣的:(ios,Objective-C,内存管理策略)