Ios 使用AFN网络保持循环
我正在写一个图片库,可以通过Ios 使用AFN网络保持循环,ios,afnetworking,retain-cycle,Ios,Afnetworking,Retain Cycle,我正在写一个图片库,可以通过AFNetworking的url加载 在ImageView对象的Init方法中,我调用了一个发送请求的函数。在这里: - (void) loadWithUrl:(NSURL *)url { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePo
AFNetworking
的url加载
在ImageView
对象的Init
方法中,我调用了一个发送请求的函数。在这里:
- (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)dealoc
。我在此方法中取消加载图像的操作,因此:[m_operation cancel]代码>。我猜这些操作没有被取消,因为内存正在增加,并且没有被释放
我认为有一个循环。我想知道如何把它写对。谢谢。我在您发布的代码片段中没有看到保留周期,因此如果您正在泄漏内存,可能是由于应用程序代码的另一部分造成的
关于AFNetworking
和加载图像的“最佳实践”-
AFNetworking
在UIImageView
上有一个内置类别,该类别具有通过URL设置图像视图图像的方便方法
请参见UIImageView+AFNetworking
,特别是setImageWithURL:
方法和相关信息。这还具有保留缓存的优势(因此,如果多次请求,您不必再次获取图像),而AFAIK似乎不是通过AFImageRequestOperation
完成的,那么m_operation
是此类的一个属性吗?这是ImageView
的私有字段<代码>AFImageRequestOperation*m_操作代码>您似乎泄漏了多少内存?几KB或几MB?内存会随着图像的大小而增加。谢谢你的帮助。我试图使用该类别,但没有效果。现在,内存小的UIImage对象是活动的,不会被释放。我将在代码的另一部分中找到。