我有两个变量:
UIView *view1;
UIView *view2 = [[UIView alloc] init]
当我指定view1=view2
时 - 我应该发布view2
吗?或者只是发布view1
?
或者view1 = [view2 retain]; [view1 release];
是正确的方式?
答案 0 :(得分:1)
这完全取决于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];
我说可能是因为,这取决于你想做什么。也许您不希望retain
view2
,因为您可能不希望强烈引用它。
当然,如果你只是使用ARC,所有这些都是没有意义的:-D。
答案 1 :(得分:0)
如果您拥有一个对象(分配,保留或复制它),则必须将其释放。如果您不拥有它,则不要将其释放。
也就是说,view2拥有视图,而view1没有。您应该释放view2,但不释放view1。