假如使用alloc、new开头或者包含copy函数的方法来创建一个对象,你就拥有了这个对象的所有权。(假如新对象的retain计数为1,并且不在自动释放池里,那么,你就有义务在不用这个对象的时候释放它)。传递对象所有权一些常见的方法是alloc(也经常会跟着init方法),copy和mutableCopy。
通过其他方式创建的对象,就不一定拥有这个对象的所有权。(新对象的retain计数为1,放在自动释放池中,如果在自动释放池被清空之前,该对象被retain了,那就不会被释放了,否则,这个对象肯定会被释放)。
加入并不拥有一个对象的所有权,却想让它一直存在,可发生retain消息来获得所有权(这步操作增加了retain计数)
当有一个对象的所有权,但后面不再需要它时,可发生release和autorelease消息。(release消息立即减少retain计数;autorelease消息只在自动释放池被清空的时候引起release消息的发生。)
只有对象还有一个所有者,这个对象就不会被释放。(当retain计数变为0时,就发送dealloc消息)
本文深入解析在Objective-C中,如何通过alloc、new、copy和mutableCopy等方法创建对象并掌握其所有权,以及如何通过retain、release和autorelease消息来管理对象的生命周期。
1153

被折叠的 条评论
为什么被折叠?



