我有2個變量:目標C重新分配變量
UIView *view1;
UIView *view2 = [[UIView alloc] init]
當我分配view1=view2
- 我應該釋放view2
?或者只是發佈view1
? 或是對的嗎?
我有2個變量:目標C重新分配變量
UIView *view1;
UIView *view2 = [[UIView alloc] init]
當我分配view1=view2
- 我應該釋放view2
?或者只是發佈view1
? 或是對的嗎?
這完全取決於view1
和view2
是在您的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。
如果你擁有一個對象(分配,保留或複製它),你必須釋放它。如果你不擁有它,你不會釋放它。
也就是說,view2擁有該視圖,而view1沒有。你應該釋放view2,但不是view1。