gpt4 book ai didi

iphone - 关于弱引用和保留循环的说明

转载 作者:可可西里 更新时间:2023-11-01 05:31:52 26 4
gpt4 key购买 nike

我有以下代码:

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest: request];

operation.completionBlock = ^{
if([operation hasAcceptableStatusCode]){

}
};

ARC 似乎不喜欢 [operation hasAcceptableStatusCode],我收到以下警告:“在此 block 中强烈捕获‘operation’可能会导致保留周期”。

我对引用不是很有经验,知道怎么去这里吗?

谢谢,

最佳答案

block 捕获(保留)您从它们外部引用的对象。

operation 将保留 completionBlock,completionBlock 将保留 operation,因此保留循环。

最好的办法是创建对对象的弱引用并将其传入

AFHTTPRequestOperation * __weak theOperation = operation

operation.completionBlock = ^{
if (theOperation) {
return;
}
};

弱引用在运行时是安全的,因此如果操作已被释放,您只需向 nil 发送一条消息。

关于iphone - 关于弱引用和保留循环的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8203081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com