覆盖NIB内的UIImageView的initWithImage

时间:2012-06-27 17:58:17

标签: ios uiimageview uistoryboard

这是交易:我的故事板中有25个视图控制器,每个视图控制器都有一个显示大文件大小的PNG的UIImageView。

事实证明,笔尖内的UIImageView将使用[UIImageView initWithImage:[UIImage imageNamed:]]方法(see the docs)加载其图像。使用imageNamed:的问题是,当加载每个视图控制器时,其UIImageView中的图像被放置在缓存中,我的应用程序很快就会开始获取内存警告和崩溃。

出路是使用[UIImageView initWithImage:[UIImage imageWithContentsOfFile:]],它加载图像但不缓存它。所以我要做的是在我的NIB文件中使用 调用imageWithContentsOfFile的UIImageView的子类。但我无法弄清楚如何获取在Interface Builder的Attributes Inspector中设置的图像文件的名称。

UIImageViewNoCache.h

#import <UIKit/UIKit.h>

@interface UIImageViewNoCache : UIImageView
@end

UIImageViewNoCache.h

#import "UIImageViewNoCache.h"

@implementation UIImageViewNoCache

-(id)initWithImage:(UIImage *)image{
   self = [super init];
    if(self){
        self.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], theNameOfTheImageInTheNib];]
    }
}
@end

那么,我怎样才能获得theNameOfTheImageInTheNib

1 个答案:

答案 0 :(得分:1)

看一下我写的这个类别:UIImage+SDSCache

它会调动imageNamed所以不要使用缓存。它可能对您有用或作为如何解决您的具体问题的示例。