サーバーからすぐにロードできますが、ネットワーク接続が必要です。あなたはこのコードを使用することができ、サーバからの非同期(async)それらをロードするには:あなたがしたい場合
dispatch_queue_t image_queue = dispatch_queue_create("com.company.app.imageQueue", NULL);
dispatch_queue_t main_queue = dispatch_get_main_queue();
dispatch_async(image_queue, ^{
NSString *URLString = @"http://example.com/images/19191919.png";
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:URLString];
UIImage *image = [UIImage imageWithData:imageData];
dispatch_async(main_queue, ^{
[imageView setImage:image];
});
});
あなたはまた、キャッシュディレクトリ(それがApples iOS Data Storage Guidelinesと衝突するので、ドキュメントディレクトリを使用することは推奨されません)に画像を保存し、確認することができます二回の画像をダウンロードする前に、そのコードは次のようになります。
NSString *fileName = @"19191919.png";
NSString *URLBaseString = @"http://example.com/images/";
NSString *URLString = [URLBaseString stringByAppendingString:fileName];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
NSString *dataPath = [cachePath stringByAppendingPathComponent:fileName];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:dataPath])
{
UIImage *image = [UIImage imageWithContentsOfFile:dataPath];
[imageView setImage:image];
}
else
{
dispatch_async(image_queue, ^{
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:URLString];
UIImage *image = [UIImage imageWithData:imageData];
[UIImagePNGRepresentation(image) writeToFile:dataPath atomically:YES];
dispatch_async(main_queue, ^{
[imageView setImage:image];
});
});
}
このコードは、テストされていないが、動作するはずです。私はARCを使ってメモリを管理しています。
出典
2012-05-09 09:27:36
dom
ありがとうございました!しかし、iPadは接続がない場所に置かれます。我々は、高速である必要があるので、我々はUSBバーコードスキャナーを使用するつもりですので、サーバーから写真をダウンロードすることは今のところ選択肢ではありません....とにかく;) –