1.栈放局部变量(代码结束就释放,系统自动回收)堆放对象(动态分配)
2.每个对象里分配4个字节的存储空间放 引用计数器 当引用计数器值为0时对象占用的内存自动被回收自动回收,引用计数器的初始值是1.
3.retain 引用计数器+1 release引用计数器-1
4.可以给对象发送(调用)retainCount来接收当前的引用计数器的值
5.重写dealloc(对象遗言)来判断是否回收对象内存,都要调用
[super dealloc](写在方法最后)
6.使用alloc new copy retain计数器为1.只要出现了上面3个,就必须要出现release或者autorelease;
7.retain返回的是调用它的本身,release没有返回值
8.野指针:指向僵尸对象(不可用内存)的指针。防止野指针例如:p=nil;
9.EXC-BAD-ACCESS访问已经被释放的内存(野指针错误)。僵尸对象后再用retain是不行的。(人死不能复生)
10.僵尸对象:所占有内存已经被回收的对象。
11.property的retain参数只适用于OC对象类型:release旧值,retain新值。
12.property中的多线程nonatomic性能高,atomic性能低,一般用nonatomic
13.property中参数的setter:决定了set方法的名称,一定要加冒号。getter决定了get方法的名称
14.当一个方法的返回值是bool时用is开头(规范)
15.在实际开发中不能打开实时对象检测;
16.在OC中用nil调用方法不会出现异常;
17.内存泄漏就是不被使用的对象一直在内存中没有被销毁
18.如果一个程序中出现互引用问题,那么一端对象的@property参数用assign
19.在互引用问题中开发中引用一个类的规范
1> 在.h文件中用@class来声明类
2> 在.m文件中用#import来包含类的所有东西
20.在dealloc方法中的[super dealloc]要写在最后面;
21.不管对象是在@autoreleasepool大括号之内还是之外,只要在大括号里面调用对象的autoreleasepool就有作用
22.只有在自动释放池的作用域中调用对象的autoreleasepool方法才能正常的使用
23.在ARC机制中不能再去调用release,retain和[super dealloc];
24.只要没有强指针指向的对象,ARC中立即被自动回收,默认情况所有指针都是强指针;
25.__weak中是两个弱指针