autorelease 优先 retain 其次

Tip 给对象赋值时遵守 autorelease之后 retain 的模式。 当给一个变量赋值新的对象时,必须先释放掉旧的对象以避免内存泄露。有很多 “正确的” 方法可以处理这种情况。我们则选择 “autorelease 之后 retain” 的方法,因为事实证明它不容易出错。注意大的循环会填满 autorelease 池,并且可能效率上会差一点,但权衡之下我们认为是可以接受的。 1. - (void)setFoo:(GMFoo *)aFoo { 2. [foo_ autorelease]; // Won't dealloc if |foo_| == |aFoo| 3. foo_ = [aFoo retain]; 4. }