一、内存管理黄金法则:
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的区别
//www.greatytc.com/p/a8a43ae15dcd
__weak如何实现对象值自动设置为nil的
- strong 强引用 计数加1
- weak 弱饮用 计数不变 对象释放的时候会设置为nil
- assign 普通类型的赋值,用于对象会造成野指针