Sha*_*ali 4 iphone weak-references ios automatic-ref-counting afnetworking
我有以下代码:
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest: request];
operation.completionBlock = ^{
if([operation hasAcceptableStatusCode]){
}
};
Run Code Online (Sandbox Code Playgroud)
ARC似乎不喜欢[operation hasAcceptableStatusCode],并且我收到以下警告:"在此块中强烈捕获'操作'可能会导致保留周期".
我对参考没有很多经验,有什么想法去哪里?
谢谢,
Shai
块捕获(保留)从外部引用的对象.
操作将保留completionBlock,这将保留操作,因此保留周期.
最好的办法是创建一个对象的弱引用,然后传入它
AFHTTPRequestOperation * __weak theOperation = operation
operation.completionBlock = ^{
if (theOperation) {
return;
}
};
Run Code Online (Sandbox Code Playgroud)
弱引用在运行时是安全的,因此如果操作已被解除分配,您将只发送一条消息给nil.
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |