我一直想知道在使用UIImageView
对象时最佳做法是什么,并且会给你一些关于我不确定的例子。
首先,我正在开发一款同时支持多个匹配的回合制游戏,某些视图(背景图片,标签和几个按钮)将被加载到self.view
非常经常。显示它们的最佳方式是什么,添加它们然后删除:
[self.view addSubview:view];
[view removeFromSuperView];
或者是添加它们并使用隐藏属性进行游戏的最佳方式(即使在不同的匹配项中,我也可以随时显示和隐藏)?
另一个问题是,在将其从superview中移除后,是否需要将UIImageView
设置为nil
?
最后一个问题是:如果我有一个UIView
课程,我加载到UIImageViewController
并希望从[self removeFromSuperView]
内发布/删除它就足以发布该视图类占用的所有内存?
答案 0 :(得分:1)
如果这些视图经常加载到屏幕中,最好的方法是隐藏它们而不是删除它们。当我不再使用它们时,我会删除它们。
从superview中删除视图会减少1中对象的保留计数。如果使用ARC,则不必担心,如果不是,请确保保留计数为0之后删除它(每个alloc为+1,添加到子视图,每个版本为-1,autorelease,removeFromSuperView)。如果在删除视图后保留计数仍为1,则可以执行= nil以释放它。如果对象的保留计数为0,则系统将释放它。
与2相同。
答案 1 :(得分:1)
关于第2点和第3点,它实际上取决于UIImageView
的范围。如果您将其声明为strong
属性,则必须将其设置为nil才能使ARC
释放内存。如果它只是方法内部的变量,那么在方法体执行结束时,无论如何都将释放变量(并且仅由视图层次结构保留)。