NSCache
のようなインスタンスがあります。NSCache *imageCache;
基本的には、リモートの「イメージ」値を異なる で保持するために使用されます"@keys"
。私は最初にグローバルクラスにalloc
&いて、次のように条件を設定します:init
NSCache
if else
if (self.imageCache == nil)
{
self.imageCache = [[NSCache alloc] init];
}
else
{
NSLog(@"cache set");
}
毎回画像を解析する必要がないように、すべて#import
の「グローバルクラス」を使用します。しかし、問題は、私が他の場所にViewControllers
行くときです。と同じように画像の読み込みに時間がかかるためです。条件が完全に機能していないか、設定されているかどうかを確認する適切な方法ではないと思います。誰がそれの何が悪いのか教えてもらえますか? もう 1 つ、グローバル変数から使用されます。
前もって感謝します。
良い一日を過ごしてください。ViewControllers
NSCache
alloc
init
1stVC
if else
NSCache
imageCache
添加:
UIButtons
これは、 inUIScrollView
を as としてロードする方法subView
です。これはUIViewClass
、「EveryViewController」に追加したものです。行subView
を見てくださいif (cachedImage)
。それは正常に動作します。しかし、(iADImageCache)が設定されているかどうかを確認したい場合、NSCache
設定されていないことがわかります。しかし、どれを設定する必要があります。この状況では、どうすればすべての名前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];
}
}