随笔分类 - 内存管理
摘要:当一个所有者(owner,其本身可以是任何一个Objective-C对象)做了以下某个动作时,它拥有对一个对象的所有权(ownership):1. 创建一个对象。包括使用任何名称中包含“alloc”、“new”、或者“copy”的方法。2. 保留(retain)一个对象。一个对象可以有多个所有者,一个所有者也可以拥有多个对象。相应的,引用计数增减的基本规则是:1.当所有者创建一个对象时,该对象的引用计数为1。2.当所有者保留它时,该对象的引用计数加1。3.当所有者释放(release)它时,该对象的引用计数减1。与此相关的,当一个所有者对于一个对象的引用计数的增减总计为0时,它放弃了对这个对象
阅读全文
摘要:有时候一个所有者创建一个对象后,会立刻将该对象的指针传递给其它所有者。这时,这个创建者不希望再拥有这个对象,但如果立刻给它发送一个release消息会导致这个对象被立刻释放掉——这样其它所有者还没有来得及保留该对象。解决这个两难问题的方法是,给对象发送一个autorelease消息:这样创建者不再拥有该对象的所有权;该对象成为自动释放的对象,但是不会立刻被释放掉;其它所有者可以有时间保留或复制该对象,并成为其唯一所有者。我们来看一个自动释放的例子(代码清单3-1)。一个所有者先用alloc方法创建一个对象;此时该所有者拥有这个对象,对象的引用计数为1。紧接着,所有者自动释放该对象;所有者此时已
阅读全文

浙公网安备 33010602011771号