2012-02-05 132 views
-3

我有2個變量:目標C重新分配變量

  1. UIView *view1;
  2. UIView *view2 = [[UIView alloc] init]

當我分配view1=view2 - 我應該釋放view2?或者只是發佈view1? 或是對的嗎?

回答

1

這完全取決於view1view2是在您的view1 = view2時間。如果是這樣的:

UIView *view1; 
UIView *view2 = [[UIView alloc] init]; 

那麼它完全罰款只是做:

view1 = view2; 

然而,如果view1已經指向一個對象,如在此:

UIView *view1 = [[UIView alloc] init]; 
UIView *view2 = [[UIView alloc] init]; 

,那麼你會想(可能)這樣做:

[view1 release]; 
view1 = [view2 retain]; 

我說的可能是因爲,這取決於你想要做什麼。也許你不想要view2上的retain,因爲你可能不想有強烈的參考。

當然,如果你只是使用ARC,所有這些都是沒有意義的:-D。

0

如果你擁有一個對象(分配,保留或複製它),你必須釋放它。如果你不擁有它,你不會釋放它。

也就是說,view2擁有該視圖,而view1沒有。你應該釋放view2,但不是view1。