这是ARC下的漏洞吗?

时间:2012-10-13 19:03:31

标签: iphone objective-c ios cocoa automatic-ref-counting

我正在使用ARC,在一种方法中我分配了一个操作对象。这会导致内存泄漏吗?如果是,我应该将其设置为nil?在完成块内或[operation start];之后?

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    // success downloading file
    // Do something
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // error downloading file
    // Do something else
}];

[operation start];

2 个答案:

答案 0 :(得分:1)

没有泄漏。没关系。但是,通常,在块中引用operation将导致保留周期。但看起来API会为您预料到并传递可用的副本。我想你可以假设operation块参数可以安全引用。

通常,如果您需要引用块中的块所有者,您将声明一个未保留的副本并引用它...

__unsafe_unretained BlockOwningClass *blockOwnerCopy = blockOwner;
[blockOwner doBlock:^{  NSLog(@"%@", blockOwnerCopy); }];

答案 1 :(得分:1)

不,在这种情况下,系统会为您处理内存管理,而不会有任何泄漏风险。