Это написано в моем viewDidLoad
методеЗагрузка изображений в UIViewController Асинхронный - с кодом
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *op = [[NSInvocationOperation alloc]
initWithTarget:self
selector:@selector(downloadImage)
object:nil];
[queue addOperation:op];
// В остальное в других методах;
- (void)downloadImage{
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:person.picURL]];
UIImage* image = [[UIImage alloc] initWithData:imageData] ;
[self showImage: image];
}
Я попытался добавить следующие коды выше [self showImage: image];
и я в конечном итоге с исключением.
1.) [self performSelectorOnMainThread:@selector(showImage:) withObject:image waitUntilDone:NO];
2.) [self performSelectorInBackground:@selector(showImage:) withObject:image];
// Это showImage
код.
- (void)showImage:(UIImage *)img {
if (img != nil)
{
myImageView = [[UIImageView alloc] initWithImage:img];
myImageView.frame = CGRectMake(20, 20, 132, 124);
[scrollView addSubview:myImageView];
[pictureOfPerson setImage:img];
}
}
Я пытаюсь Asynchronously
загрузить изображение и кэширует его. Изображение загружается Asynchronously
, но я не уверен, что он кэшируется.
1.) Как кэшировать изображение и использовать его в когда вид нагрузки снова
2.) В то время как изображение загружается, что если я нажимаю на другой точке зрения. Затем мне нужно остановить загрузку. Как я могу написать этот код. Я знаю, что мне нужно написать его в методе viewDidDissapear.
3.) Является ли мой код правильным. Я что-то пропустил или есть лучший подход к этому? если это учебник или некоторые примеры кода, пожалуйста,
Как я могу сделать это программно? 'Вы можете использовать свойство класса, такое как NSMutableDictionary, для хранения данных UIImage и связывания его с вашим URL. Если он присутствует, используйте его, если нет, загрузите изображение. ' – shajem
Что такое' self.imageCache'? – shajem
imageCache будет вашим NSMutableDictionary. –