我真的在尝试优化我的代码以移动UIImageViews
。
我有一个主要的方法来枚举我的所有UIImageViews
。
哪个枚举的执行速度会更快,或者两者的执行方式完全相同?
示例1:在此示例中,我在UIImageViews
的视图中枚举了所有的UIViewController
for (UIImageView *imageView in self.view.subviews)
{
...
}
示例2:在此示例中,我枚举
UIImageViews
中的所有NSMutableArray
。数组始终包含在UIImageViews
中找到的所有self.view.subviews
(它只是通常只在self.view.subviews中找到的所有UIImageViews的副本,我只需要创建一次) for (UIImageView *imageView in self.imageViews)
{
...
}
那么哪个示例应该为我提供更快,更优化的枚举?请注意,这些已由我已设置的CADisplayLink不断枚举。另请注意,
self.view.subviews
返回一个NSArray
,因此当我使用第一个枚举时,可能会不断创建此NSArray
,这让我认为NSMutableArray
方法会执行得更好并且开销更少,但我不确定。编辑:所有子视图都是
UIImageViews
。我也不确定使用subviews属性时是否有任何重大开销,因为它看起来可能会做一些“幕后”工作来让我知道NSArray。 最佳答案
无需遍历子视图,您可以使用Tag
属性非常快地完成操作
例:
通过UIimageView
将标签添加到code or xib
myImageView.tag = 1;
然后,
UIImageView *myImageView = ([[self.view viewWithTag:1] isKindOfClass:[UIImageView class]])?(UIImageView *)[self.view viewWithTag:1]:nil;
关于您的迭代代码
假设所有子视图都是UIImageViews,那么第一个代码将是最有效的。
for (UIImageView *imageView in self.view.subviews)