我正在寫一個圖片庫,其中可以通過url加載的圖片AFNetworking
。通過AFNetworking保留週期
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];
。我猜這些操作並沒有被取消,因爲內存在增加並且沒有被釋放。
我認爲有保留週期。我想了解如何正確書寫它。謝謝。
那麼m_operation是這個類的一個屬性呢? –
這是'ImageView'的私人領域。 'AFImageRequestOperation * m_operation;' – Sauvage
你看起來有多少內存泄漏?幾千字節或幾MB? –