关于 block 中的 Weak/Strong Dance 的问题

好多项目中带有 block 的代码都使用一些宏定义,比如 @weakify(self): A more elegant solution to weakSelf in Objective-C ,而个别 block 其实是不需要使用 weakSelf 的,这些 block 的拥有者并没被  self  在其生存周期始终强引用着,所以没必要用 weakSelf。反而在少数极端情况下(例如异步延时执行 block)因为捕获的是 weakSelf,而在 block 执行前 self 已经是  nil 。此时不要指望 block 中的 strongSelf 会帮到什么忙,因为它力所能及的只是在 block 执行过程中保证对 weakSelf 的强引用。如若 weakSelf 不再指向  self  而是  nil ,block 中的内容肯定不会正常执行(这不代表一定会 crash,向  nil  发送消息会执行默认的行为)。

你可能感兴趣的:(Objective-C)