我们有这样的结构(ARC 代码):
// load an object into an ivar using a block
self->objectLoader = [MyObject loadOnSuccess:^(MyObject *object) {
// reference self from the block, so self is retained
self->_object = object;
// try to dereference the loader
self->objectLoader = nil;
}
问题是对象永远不会释放,因为 self 永远不会完全释放。如果我将 self 替换为 weakSelf 版本,则该对象将成功解除分配。
有没有办法将 ivar 归零,以便释放它“持有”的块并且可以释放对象?