我有以下代码,期待一旦obj2被释放obj1仍然保留,它的工作?分配给另一个对象与保留和autorelease
obj1 = [[Class1 alloc] init];
obj2 = [[obj1 retain] autorelease];
我有以下代码,期待一旦obj2被释放obj1仍然保留,它的工作?分配给另一个对象与保留和autorelease
obj1 = [[Class1 alloc] init];
obj2 = [[obj1 retain] autorelease];
我有下面的代码,希望一旦obj2的释放OBJ1仍然保留,将它的工作?
obj1
和obj2
都是指针到同一对象。创建该对象时,该对象的保留计数为1。当您在第二行再次保留对象时,对象的保留计数会增加到2。对象(及其指向它的任何指针)因此将保持有效,直到它被释放两次。其中一个版本最终将来自第二行的autorelease
;另一个应该由你的代码在某处提供。
它会工作,但我不确定你的结论是正确的(有一个解析错误)。
obj1 = [[Class1 alloc] init];
obj2 = [[obj1 retain] autorelease];
它有助于考虑delta和per-reference方面的保留和释放。因此,在下面的代码中,您会说“obj1引用的保留计数为+1”,“obj2引用的保留计数为+0”。
也就是obj1
是一个很强的参考,obj2
是一个弱的参考。
如果你想让对象消失,你会[obj1 release]
。您可以可能[obj2 release]
,但这意味着所有权转让应该只是出于很好的理由和相当明确。
或者你可以打开ARC并完成它。