2011-10-01 76 views
0

我敢肯定这是正确的,但如果可能的话,你可以确认Objective-C的释放,自动释放,澄清需要

[[self doublyLinkedList] add:[n1 autorelease]]; 

[[self doublyLinkedList] add:n1]; 
[n1 release]; 

都将产生相同的retainCount为N1 ,一旦泳池排水

+1

根据你是否拥有'n1',这两个选项都是正确的或不正确的。如果您创建或保留它,您拥有'n1'。 – albertamg

回答

1

是的,结果在两种情况下都是相同的。

+0

谢谢你!我也可以从n1的班级'返回[自我减免]吗? – JAM

+0

这将是一个不好的做法。对象不应该在自己的selfs上调用'retain'和'release'('autorelease')。 –

+0

@aleksejs答案是正确的,评论不是。返回对象的方法通常应该返回自动释放对象。一个工厂方法将返回'[实例autorelease]'或一个实例方法可能经常做'return [[self retain] autorelease];' – bbum

3

虽然这两种方法最终都会导致相同的保留计数,但明确调用释放会更有效,因为不必将对象添加到自动发布池中并从中移除。

+0

好点,谢谢 – JAM