1

我一直想知道处理UIImageView对象时的最佳实践是什么,我会举几个例子说明我不确定的事情。

  1. 首先,我正在开发一款同时支持多场比赛的回合制游戏,并且某些视图(背景图像、标签和一些按钮)会self.view经常加载。显示它们的最佳方法是什么,添加它们然后删除:

    [self.view addSubview:view];
    [view removeFromSuperView];
    

    或者是添加它们并使用隐藏属性的最佳方式(在我需要时显示和隐藏,即使在不同的比赛中)?

  2. 另一个问题是从superview中删除后是否UIImageView需要设置一个?nil

  3. 最后一个问题是:如果我有一个UIView加载到一个类UIImageViewController并想要从内部释放/删除它[self removeFromSuperView]是否足以释放该视图类占用的所有内存?

4

2 回答 2

1
  1. 如果这些视图经常加载到屏幕中,最好的方法是隐藏它们而不是删除它们。当我不再使用它们时,我会删除它们。

  2. 从superview中删除一个视图会减少1中对象的retain count。如果你使用ARC,你不应该担心,如果你不是,请确保删除后retain count为0(+1为每个分配,添加到子视图,每个发布都为-1,自动释放,removeFromSuperView)。如果删除视图后保留计数仍为 1,则可以执行 = nil 来释放它。如果对象的保留计数为 0,则系统将释放它。

  3. 同2。

于 2013-09-24T13:09:09.793 回答
1

关于第 2 点和第 3 点,这实际上取决于您的UIImageView. 如果将其声明为strong属性,则必须将其设置为 nil 才能ARC释放内存。如果它只是方法内部的一个变量,那么在方法体执行结束时,无论如何都会释放该变量(并且仅由视图层次结构保留)。

于 2013-09-24T13:15:22.507 回答