__block 与 __weak的区别是什么?

两者在功能上的区别?

__block会持有该对象,即使超出了该对象的作用域,该对象还是会存在的,直到block对象从堆上销毁;

__weak仅仅是将该对象赋值给weak对象,当该对象销毁时,weak对象将指向nil;

__block可以让block修改局部变量,而__weak不能。

MRC中__block是不会引起retain;但在ARC中__block则会引起retain。所以ARC中应该使用__weak。

循环引用的问题?

block下循环引用的问题

__block本身并不能避免循环引用,避免循环引用需要在block内部把__block修饰的obj置为nil

__weak可以避免循环引用,但是其会导致外部对象释放了之后,block 内部也访问不到这个对象的问题,我们可以通过在 block 内部声明一个 __strong的变量来指向 weakObj,使外部对象既能在 block 内部保持住,又能避免循环引用的问题。

相关推荐
阿里超级工程师3 分钟前
最新快速申请ios打包证书和profile文件步骤
ios·打包证书
2501_915909064 小时前
iOS 应用反调试技详解术 检测调试器的原理与防护实践
android·ios·小程序·https·uni-app·iphone·webview
游戏开发爱好者85 小时前
TraceEagle 代理抓包详解,无感代理、去证书绑定与 HTTP/3 解密能力解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
aiopencode6 小时前
SwiftUI Introspect生产环境完全指南:为什么它是安全可靠的选择
后端·ios
for_ever_love__7 小时前
iOS: 网络管理单例
学习·ios·objective-c
00后程序员张7 小时前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
ii_best17 小时前
更新!移动端开发软件按键安卓版&手机助手v5.1.0上线!本地AI识别全面解锁,脚本开发再升级
android·人工智能·ios·按键精灵
weixin_4038101321 小时前
03-iOS免越狱无线投屏-上传图片和视频到相册
ios·新媒体运营·跨境电商·ios自动化·ios投屏·ios智能体·ios脚本
2501_9160074721 小时前
SwiftUI 声明式语法与 Xcode 预览功能详解
ide·vscode·ios·swiftui·个人开发·xcode·敏捷流程
2501_916008891 天前
iOS IPA文件反编译与打包操作方法,拆包分析防护和加固打包
android·macos·ios·小程序·uni-app·cocoa·iphone