gpt4 book ai didi

ios - 释放类对象时使用 block 进行内存管理

转载 作者:行者123 更新时间:2023-11-28 17:57:01 25 4
gpt4 key购买 nike

假设执行了如下所示的示例 block 。

[testBlock testPerformWithBlock:^(BOOL finished) {
if (finished) {
self.textField.text = @"Finished";
NSLog(@"Edited to add an textfield update inside block");

}
}];

如果我在 block 返回 BOOL 值之前弹出包含对象 testBlock 的 View Controller ,将会发生什么。对象会被正确释放吗?

最佳答案

block 中的所有内容都会保留,直到 block 从内存中释放。如果对象 testBlock 仍在执行 testPerformWithBlock 并且 block 仍然存在,则 block 内的所有内容都会保留。

你只是在里面做一个 NSLog,所以什么都不会改变。

但是,如果您这样做:

if (finished) {
[self doSomething];
}

self 正在被使用,它将被保留,所以如果你将 block 存储在某个 ivar 中的某个地方,请小心

关于ios - 释放类对象时使用 block 进行内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14728334/

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