我有一个实例NSCache
,例如:NSCache *imageCache;
它基本上用于保存一些具有不同的远程“图像”值"@keys"
。I alloc
&init
NSCache
在开头的 Global 类中设置if else
条件,如下所示:
if (self.imageCache == nil)
{
self.imageCache = [[NSCache alloc] init];
}
else
{
NSLog(@"cache set");
}
我#import
是所有的“全局类” ViewControllers
,这样我就不必每次都解析图像。但问题是当我去其他地方时,ViewControllers
似乎每次都如此。因为将图像加载为. 我认为条件没有完美运行,或者它不是检查设置与否的适当方法。谁能告诉我它有什么问题?还有一件事, The是从全局变量中使用的。
提前致谢。
祝你有美好的一天。NSCache
alloc
init
1stVC
if else
NSCache
imageCache
添加:
这是我将UIButtons
in加载UIScrollView
为subView
. 这是UIViewClass
我在我的“EveryViewController”中添加的一个,subView
只要看看就if (cachedImage)
行了。它工作正常。但是,当我想检查NSCache
(iADImageCache) 是否设置时,它显示它没有设置。但是应该设置哪个。在这种情况下,我怎样才能iADImageCache
用不同的@"Key"
名字检查所有几个?再次感谢。
-(void) loadUIButton
{
[self loadScrollView];
for (int i = 0; i < [iADDisplayArray count]; i++)
{
adButtonOutLet = [[UIButton alloc] initWithFrame:CGRectMake(i*320, 0, ButtonWidth, ButtonHight)];
currentAd = [iADDisplayArray objectAtIndex:i];
NSString *path = currentAd.bannerIconURL;
NSURL *url = [NSURL URLWithString:path];
NSMutableURLRequest *requestWithBodyParams = [NSMutableURLRequest requestWithURL:url];
NSData *imageData = [NSURLConnection sendSynchronousRequest:requestWithBodyParams returningResponse:nil error:nil];
UIImage *originalImage = [UIImage imageWithData:imageData];
UIImage *cachedImage = [self.iADImageCache objectForKey:currentAd.bannerIconURL];
if (cachedImage)
{
[adButtonOutLet setImage:cachedImage forState:UIControlStateNormal];
//NSLog(@"OnecachedImage %@", cachedImage);
}
else
{
[self.iADImageCache setObject:originalImage forKey:currentAd.bannerIconURL];
[adButtonOutLet setImage:originalImage forState:UIControlStateNormal];
NSLog(@"OneimageCache %@", self.iADImageCache);
}
adButtonOutLet.userInteractionEnabled= YES;
[adButtonOutLet setTag:i];
[adButtonOutLet addTarget:self action:@selector(goToURL:) forControlEvents:UIControlEventTouchUpInside];
[self.iADScrollView addSubview:adButtonOutLet];
}
}