我的ViewController创建了60个小UIViews。每个都需要相同jpg的UIImage(在UIImageView中使用)。
我的理论是,不是每个UIView都创建自己的UIImage,最好重用一个在ViewController中定义的UIImage。
ViewController代码:
UIImage *reuseableUIImage = [UIImage imageNamed:@"LittlePicture.jpg"];
for (i=0; i<60; i++){
[arrayOfUIViews addObject:[[myUIViewMaker alloc] init...]];
}
我的理论错了吗?我应该继续在每个UIView中创建UIImage吗?
如果我的理论很好,我的UIViews如何定位父ViewController的UIImage? 我不知道语法。为了说明(糟糕),UIView中的代码将类似于:
finalUIImageView = [[UIImageView alloc] initWithImage:self.parentViewController.reuseableUIImage];
答案 0 :(得分:2)
您的代码看起来不错,应该可以正常运行。您需要在viewController上定义一个属性来保存UIImage。
您将从中获得的主要好处是加载图像的时间只会发生一次。如果为每个视图分配和初始化图像,则每次都必须加载图像。
编辑:
再次考虑它,最好的方法是在初始化时将图像传递到子视图中。
UIImage *reuseableUIImage = [UIImage imageNamed:@"LittlePicture.jpg"];
for (i=0; i<60; i++){
[arrayOfUIViews addObject:[[myUIViewMaker alloc] initWithImage:reusableUIImage]];
}
myUIViewMaker类中的init方法将实现为:
-(id)initWithImage:(UIImage *)image
{
self = [super init];
if (self) {
finalUIImageView = [[UIImageView alloc] initWithImage:image];
}
return self;
}