Cocoa库中,水果的库开发者使用下面的规则撰写的库:
1.如果对象使用"-"初始化方法创建,那么对象仅仅对引用计数加1,也就是内部执行一次retain操作。
2.如果对象使用"+"初始化对象(相当于java或者C++的static方法),那么对象不但对引用计数加1,还自动执行autorelease操作。
3.如果某个对象的方法返回一个新对象,那么这个对象是autorelease的。
4.使用@property (retain) 声明的属性,将会在第一次赋值时,执行retain操作,赋值nil,会执行release。
5.UIApplication的消息循环,每一次都会创建一个Autorelease pool,所以在main thread中,一般情况下自己不需要再另创建Autorelease pool。
6.动态系统有的时候会对用户的object执行retain,所以程序员自己不要观测retainCount。
7.dalloc消息不见得会被立刻执行,这是动态系统决定。