https://www.jianshu.com/p/79d31eb822db
https://www.jianshu.com/p/d68d5bb431c8
https://www.jianshu.com/p/701da54bd78c
// MRC
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m
// ARC
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -fobjc-arc -fobjc-runtime=ios-8.0.0 main.m
![](https://img.haomeiwen.com/i759898/0fae335a0a00b88a.png)
![](https://img.haomeiwen.com/i759898/6b038e39cffc0064.png)
这个问题的关键是理解:
1.__strong typeof(weakPerson) strongPerson = weakPerson;是可以对弱引用的对象retain+1的。
2.只有产生了循环引用才会内部不会释放 只要保证block内使用的strong对象引用计数不是0即可。
![](https://img.haomeiwen.com/i759898/edf0e13b4618d4e8.png)
3.不用担心引用循环引用而产生内存泄漏,是因为strongPerson是个局部变量,block执行完毕就会被销毁,循环被破坏。
网友评论