OC-内存管理的初步认识

一、内存管理黄金法则:

The basic rule to apple is everything thatincreases the reference counter with alloc,[mutable]copy[WithZone:] or retainis in charge of the corresponding [auto]release.

如果一个对象使用了alloc,[mutable] copy,retain,new那么你必须使用相应的release或autonrelease

二、对象的内存生命

生成对象并持有----alloc,new,copy,mutablecopy
持有对象-------retain
释放对象-------release
废弃对象-------dealloc

从对象的生成持有释放,当饮用计数为0的时候废弃。

1、自己生成对象并持有
  • alloc
  • new
  • copy
  • mutableCopy

copy方法生成不可变更的对象
mutableCopy生成可变的对象

对于NSString的内存管理比较特殊参考 http://blog.csdn.net/Lotheve/article/details/52035477

2、release和autorelease

release直接释放对象引用计数减1
autorelease会将对象注册自动释放池内,pool结束的时候调用release
实现原理:[autorelease addObject:o];pool drain的时候release

3、arc中几个关键字的区别

weak和assign的区别
http://www.jianshu.com/p/a8a43ae15dcd
__weak如何实现对象值自动设置为nil的

  • strong 强引用 计数加1
  • weak 弱饮用 计数不变 对象释放的时候会设置为nil
  • assign 普通类型的赋值,用于对象会造成野指针

你可能感兴趣的:(OC-内存管理的初步认识)