创建一个在UIImageView中包装已加载图像的方法

时间:2010-06-06 18:47:38

标签: objective-c uiimageview

我有以下非 applicationDidFinishLaunching 方法

UIImage *image2 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image2.jpg" ofType:nil]];
view2 = [[UIImageView alloc] initWithImage:image2];
view2.hidden = YES;
[containerView addSubview:view2];

我只是在图片中添加图片。但是因为我需要添加30-40个图像,我需要将上面的内容包装在一个函数中(它返回一个UIImageView),然后从循环中调用它。

这是我第一次尝试创建功能

-(UIImageView)wrapImage:(NSString *)imagePath
{
  UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]
                                    pathForResource:imagePath 
                                             ofType:nil]];
  UIImageView *view = [[UIImageView alloc] initWithImage:image];
  view.hidden = YES;
  return view;
}

然后调用它我到目前为止有以下内容,为简单起见,我只包装3张图像

//Create an array and add elements to it
NSMutableArray *anArray = [[NSMutableArray alloc] init];
[anArray addObject:@"image1.jpg"];
[anArray addObject:@"image2.jpg"];
[anArray addObject:@"image3.jpg"];

//Use a for each loop to iterate through the array
for (NSString *s in anArray) {
  UIImageView *wrappedImgInView=[self wrapImage:s];
  [containerView addSubview:wrappedImgInView];
  NSLog(s);
}
//Release the array
[anArray release];

我有2个一般性问题

  1. 我的方法是否正确?,即遵循最佳实践,我正在尝试做什么(加载多个图像(jpgs,pngs等)并将它们添加到容器视图中)
  2. 为了能够正常使用大量图像,我是否需要将数组创建与方法调用分开?
  3. 欢迎任何其他建议!

1 个答案:

答案 0 :(得分:0)

请注意,在函数声明中,您应该返回指向UIImageView的指针,而不是UIImageView本身(即添加星号)。

此外,从函数返回视图时,您应自动释放它。否则会泄漏内存。初始化看起来应该是这样的:

UIImageView *view = [[[UIImageView alloc] initWithImage:image] autorelease];

其他一切看起来都很好。