次のような構造があります (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 を nil する方法はありますか?