gpt4 book ai didi

ios - 对 iOS block 和保留循环的偏执

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:17 25 4
gpt4 key购买 nike

我对 block 和创建循环保留的可能性有点偏执。我正在使用 UIAlertView 类的基于 block 的版本,它允许您使用 block 而不是委托(delegate)方法。我使用了很多这样的 Alertviews,所以我经常调用实例方法来完成大量繁重的工作。

我在方法 someInstanceMethod 中进行的赋值会导致保留周期吗?
(我正在使用 ARC 进行内存管理。)

__weak id weakSelf = self;
[doWorkAndThen:^{
[weakSelf someInstanceMethod];
}];

-(void) someInstanceMethod{
//will either of the assignments below cause a retain cycle?
self.iVar = @"data";
[self setIvar:@"data";
}

最佳答案

没有。 -someInstanceMethod 不是 block 。你从一个人那里打电话的事实是无关紧要的。 引用内部 block 本身会导致保留,并且由于您 block 内的唯一引用是__weak变量,所以您没问题。

顺便说一句,如果您真的想放松心情,您应该修改基于 block 的 UIAlertView 类,以便在 View 关闭时丢弃所有 block 。这样即使您确实创建了一个保留周期,它也会在警报 View 消失后立即自动中断。

关于ios - 对 iOS block 和保留循环的偏执,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269323/

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