终于理解weakSelf和strongSelf了

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


block内的__strong是会对对象retain +1的

这个问题的关键是理解:
1.__strong typeof(weakPerson) strongPerson = weakPerson;是可以对弱引用的对象retain+1的。
2.只有产生了循环引用才会内部不会释放     只要保证block内使用的strong对象引用计数不是0即可。

该例子并没有循环引用,但是在block内对self+1了

3.不用担心引用循环引用而产生内存泄漏,是因为strongPerson是个局部变量,block执行完毕就会被销毁,循环被破坏。

你可能感兴趣的:(终于理解weakSelf和strongSelf了)