我有以下代碼,期待一旦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並完成它。