0

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

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

出路是使用[UIImageView initWithImage:[UIImage imageWithContentsOfFile:]],它加载图像但不缓存它。所以我想做的是在我的 NIB 文件中使用UIImageView 的一个子类,它调用imageWithContentsOfFile. 但我不知道如何获取在 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

4

1 回答 1

1

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

它会混在一起imageNamed,所以不使用缓存。它可能对您有用,或者作为如何解决您的特定问题的示例。

于 2012-06-27T18:29:41.920 回答