目标c重新分配变量

时间:2012-02-05 22:19:56

标签: objective-c

我有两个变量:

  1. UIView *view1;
  2. UIView *view2 = [[UIView alloc] init]
  3. 当我指定view1=view2时 - 我应该发布view2吗?或者只是发布view1? 或者view1 = [view2 retain]; [view1 release];是正确的方式?

2 个答案:

答案 0 :(得分:1)

这完全取决于view1view2view1 = 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。