假设执行了如下所示的示例 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/