Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用AFN网络保持循环_Ios_Afnetworking_Retain Cycle - Fatal编程技术网

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对象是活动的,不会被释放。我将在代码的另一部分中找到。