UIImageView最佳实践

时间:2013-09-24 13:04:44

标签: ios objective-c memory uiimageview

我一直想知道在使用UIImageView对象时最佳做法是什么,并且会给你一些关于我不确定的例子。

  1. 首先,我正在开发一款同时支持多个匹配的回合制游戏,某些视图(背景图片,标签和几个按钮)将被加载到self.view非常经常。显示它们的最佳方式是什么,添加它们然后删除:

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

    或者是添加它们并使用隐藏属性进行游戏的最佳方式(即使在不同的匹配项中,我也可以随时显示和隐藏)?

  2. 另一个问题是,在将其从superview中移除后,是否需要将UIImageView设置为nil

  3. 最后一个问题是:如果我有一个UIView课程,我加载到UIImageViewController并希望从[self removeFromSuperView]内发布/删除它就足以发布该视图类占用的所有内存?

2 个答案:

答案 0 :(得分:1)

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

  2. 从superview中删除视图会减少1中对象的保留计数。如果使用ARC,则不必担心,如果不是,请确保保留计数为0之后删除它(每个alloc为+1,添加到子视图,每个版本为-1,autorelease,removeFromSuperView)。如果在删除视图后保留计数仍为1,则可以执行= nil以释放它。如果对象的保留计数为0,则系统将释放它。

  3. 与2相同。

答案 1 :(得分:1)

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