这是交易:我的故事板中有25个视图控制器,每个视图控制器都有一个显示大文件大小的PNG的UIImageView。
事实证明,笔尖内的UIImageView将使用[UIImageView initWithImage:[UIImage imageNamed:]]
方法(see the docs)加载其图像。使用imageNamed:
的问题是,当加载每个视图控制器时,其UIImageView中的图像被放置在缓存中,我的应用程序很快就会开始获取内存警告和崩溃。
出路是使用[UIImageView initWithImage:[UIImage imageWithContentsOfFile:]]
,它加载图像但不缓存它。所以我要做的是在我的NIB文件中使用 调用imageWithContentsOfFile
的UIImageView的子类。但我无法弄清楚如何获取在Interface Builder的Attributes Inspector中设置的图像文件的名称。
#import <UIKit/UIKit.h>
@interface UIImageViewNoCache : UIImageView
@end
#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
?