【发布时间】:2017-01-24 07:47:13
【问题描述】:
通过在块中使用weakSelf,您可以避免保留循环。但有时您应该保持weakSelf直到块保留,因此您需要像使用strongSelf一样
__weak __typeof__(self) weakSelf = self;
dispatch_group_async(_operationsGroup, _operationsQueue, ^
{
__typeof__(self) strongSelf = weakSelf;
[strongSelf doSomething];
[strongSelf doSomethingElse];
} );
我想知道weakSelf什么时候为nil,那么我们应该添加__strong typeof(self) strongSelf = weakSelf
【问题讨论】:
-
self已经很强大了。你有弱有强,两者之间没有任何关系。 -
如果只是在 'self' 持有的块中使用 'self' ,导致保留循环。因此你应该使用 weakSelf 。StrongSelf 是对 self 的强引用,但是当块完成时它将被释放。就这样不要导致保留循环。(只是我的理解)
标签: ios objective-c