weak & strong self
常看到一个 block 要使用 self,会处理成在外部声明一个 weak 变量指向 self,在 block 里又声明一个 strong 变量指向 weakSelf:
- __weak __typeof(self)weakSelf = self;
- self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
- __strong __typeof(weakSelf)strongSelf = weakSelf;
- }];
weakSelf是为了block不持有self,避免循环引用,而再声明一个strongSelf是因为一旦进入block执行,就不允许self在这个执行过程中释放。block执行完后这个strongSelf会自动释放,没有循环引用问题。
相关说明:
本文探讨了在iOS开发中如何正确使用弱引用(weak)和强引用(strong)来避免循环引用的问题。通过具体代码示例展示了在block中如何声明弱引用变量weakSelf并进一步在block内部声明强引用变量strongSelf。
5万+

被折叠的 条评论
为什么被折叠?



