[英]Clarification about weak references and a retain cycles
我有以下代碼:
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest: request];
operation.completionBlock = ^{
if([operation hasAcceptableStatusCode]){
}
};
ARC似乎不喜歡[operation hasAcceptableStatusCode],並且我收到以下警告:“在此塊中強烈捕獲'操作'可能會導致保留周期”。
我對參考沒有很多經驗,有什么想法去哪里?
謝謝,
夏嘉曦
塊捕獲(保留)從外部引用的對象。
操作將保留completionBlock,這將保留操作,因此保留周期。
最好的辦法是創建一個對象的弱引用,然后傳入它
AFHTTPRequestOperation * __weak theOperation = operation
operation.completionBlock = ^{
if (theOperation) {
return;
}
};
弱引用在運行時是安全的,因此如果操作已被解除分配,您只需向nil發送消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.