我真的在尝试优化我的代码以移动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)

09-04 10:07