Сохранить цикл с AFNetworking
Я пишу галерею с изображениями, которые могут быть загружены по URL с AFNetworking
,
В Init
метод ImageView
объект я вызываю функцию, которая отправляет запрос. Вот:
- (void) loadWithUrl:(NSURL *)url
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:TimeOut];
[request setHTTPShouldHandleCookies:NO];
[request setHTTPShouldUsePipelining:YES];
__weak AOWImageView *safeSelf = self;
m_operation = [AFImageRequestOperation imageRequestOperationWithRequest:request
imageProcessingBlock:nil
success:^
(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
{
[safeSelf setImage:image];
}
failure:^
(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
{
[safeSelf setNoImageLabelOpaque];
}];
[m_operation start];
}
Если ImageView
находится за пределами видимой части экрана - (void) dealloc
называется. Я отменяю операцию загрузки изображения в этом методе так: [m_operation cancel];
, Я предполагаю, что операции не отменены, потому что память увеличивается и не освобождается.
Я думаю, что есть сохранить цикл. Я хочу понять, как правильно написать. Благодарю.
1 ответ
Я не вижу цикла сохранения в фрагменте кода, который вы разместили, поэтому, если вы теряете память, это может быть связано с другой частью кода вашего приложения...
Относительно "лучших практик" для AFNetworking
и загрузка изображений-
AFNetworking
имеет встроенную категорию на UIImageView
у этого есть удобные методы для установки изображения представления изображения через URL.
Увидеть UIImageView+AFNetworking
конкретно setImageWithURL:
метод и связанные с ним. Это также имеет преимущество в сохранении кэша (так что вам не нужно снова загружать изображения, если их запрашивают несколько раз), что, как кажется, AFAIK не делает AFImageRequestOperation
,