当前位置: 首页 > news >正文

网站logo设计创意上传网站根目录

网站logo设计创意,上传网站根目录,四川建设网招聘,免费seo视频教程以下是对我们这整段关于 Objective-C 中 Block、__block 修饰符、内存管理行为、生命周期等内容的全面总结#xff0c;并附带了一套适合面试准备的面试题集#xff08;带答案#xff09;。 #x1f9e0; 一、知识总结#xff1a;Objective-C Block __block 修饰符 ✅ Bl…以下是对我们这整段关于 Objective-C 中 Block、__block 修饰符、内存管理行为、生命周期等内容的全面总结并附带了一套适合面试准备的面试题集带答案。 一、知识总结Objective-C Block __block 修饰符 ✅ Block 的三种类型 Block 类型类名runtime存储位置是否捕获变量生命周期全局 Block__NSGlobalBlock__全局区.data❌ 不捕获程序整个生命周期栈 Block__NSStackBlock__栈上✅ 捕获随函数作用域结束销毁堆 Block__NSMallocBlock__堆上copy 后✅ 捕获ARC/MRC 管理 ✅ ARC 与 MRC 的区别 特性ARCMRC是否自动 copy Block✅ 是捕获变量会自动 copy 到堆❌ 否需手动 copyNSAutoreleasePool 可用❌ 不可用改用 autoreleasepool✅ 可以使用retain/release 是否可用❌ 禁止✅ 手动管理 ✅ __block 修饰符 特性默认变量__block 修饰是否可在 Block 中修改❌ 否值捕获✅ 是引用捕获捕获方式值拷贝by value引用封装为结构体生命周期Block 生命周期内有效Block 生命周期或外部引用共同决定释放机制不需要释放副本自动随 Block 释放ARC 下自动 retain/release ✅ 修改变量是否需要 __block 操作类型是否需要 __block修改对象内容如 addObject:❌ 不需要修改指针变量本身如 obj nil✅ 需要修改基本类型变量✅ 需要捕获但不修改变量❌ 不需要 ✅ 生命周期补充 捕获变量类型生命周期默认与 Block 相同可否更长基本类型✅ 是❌ 否对象类型未被强引用✅ 是✅ 可被外部引用延长__block 捕获对象✅ 是✅ 可 retain 延长或造成循环引用 二、面试题集 以下是整理出的 15 道典型面试题附答案覆盖基础、陷阱和进阶内容 ✅ 基础题 Q1: Block 有哪三种类型它们的区别是什么 ️__NSGlobalBlock__不捕获变量放在全局区、__NSStackBlock__捕获变量栈上临时、__NSMallocBlock__捕获变量 copy 后的堆 Block生命周期更长。 Q2: 什么情况下 Block 是 __NSGlobalBlock__ ️当 Block 没有捕获任何外部变量时它就是 __NSGlobalBlock__存在全局数据段程序整个生命周期都有效。 Q3: 在 ARC 和 MRC 下 Block 的默认行为有何不同 ️ ARCBlock 捕获变量时自动拷贝到堆上自动成为 __NSMallocBlock__MRCBlock 默认在栈上__NSStackBlock__需手动 copy。 Q4: 为什么要将 Block 从栈 copy 到堆 ️因为栈上的 Block 随函数调用结束而销毁拷贝到堆上可以安全地在异步、延迟或跨作用域中使用。 Q5: ARC 下是否需要手动调用 copy ️不需要编译器会自动为你 copy Block 到堆上。 ✅ 进阶题 Q6: __block 关键字的作用是什么 ️允许 Block 修改变量本身不是对象内部属性它会将变量封装成一个结构体以引用方式捕获。 Q7: 为什么修改变量需要 __block ️因为 Block 默认对基本变量是值拷贝不允许修改。__block 改为引用方式封装可被 Block 修改。 Q8: Block 中能修改数组吗需要 __block 吗 ️可以修改数组内容不需要 __block但如果要让数组指针指向其他对象则需要 __block。 Q9: __block 修饰的对象何时释放 ️与 Block 生命周期一致Block 销毁时会释放其引用结构体对象本身在 ARC 下自动 retain/release。 Q10: Block 会强引用捕获的对象吗 ️是的Block 默认会 retain 被捕获的对象 ➜ 导致循环引用风险。 ✅ 高阶陷阱题 Q11: Block 内部使用 self 会出现什么问题如何解决 ️会强引用 self导致循环引用。解决方式是用 __weak 修饰 self 的弱引用。 Q12: 在 MRC 中为什么 NSAutoreleasePool 必须与 autorelease 配合使用 ️因为 autorelease 注册的对象会在最近的 pool 被 drain 时释放pool 负责释放“延迟对象”。 Q13: 是否有办法让 Block 捕获的对象比 Block 更长寿命 ️可以。如果外部对对象有强引用如全局变量、单例、property strong对象就会比 Block 活得更久。 Q14: Block 是否可能与 __block 变量形成 retain cycle ️是的。例如 obj.block ^{ NSLog(%, obj); }; 就形成了互相引用导致内存泄漏。 Q15: 如何破除 Block 的循环引用 ️使用 __weak 或 __unsafe_unretained 修饰外部对象避免 Block 内 retain 它。
http://www.ho-use.cn/article/10823699.html

相关文章:

  • 简单网站建设公司做网站淮南
  • 免费制作一个自己的网站吗还有哪些网站做产品众筹
  • 注册建筑劳务公司需要什么条件seo基础
  • 济南建站免费模板湖南做网站360o
  • 服装行业网站开发东莞免费建站公司
  • 营销型网站要点编程用什么软件写代码
  • 广东网站建设价格广东官网网站建设企业
  • 网站建设如何跑业务深圳高端女装品牌排行榜
  • 校园网站建设必要性aso优化平台有哪些
  • 网站提交上海做网站哪里好
  • php做的网站毕设会问的问题学生做的动漫网站
  • 盐城做网站优化微信推广网站建设
  • 长春建站模板源码专业网站制作的公司
  • 怎么在58同城上做网站windows优化大师自动下载
  • 网站怎么进行优化排名北京 建设官方网站
  • 做网站域名需哪些虚拟主机怎么发布网站吗
  • 做网站技术含量磁力网站怎么做的源码
  • 做网站推广的难点凡科自助建站系统
  • 什么是网站降权处理网站运营条件
  • 台州市城乡建设局网站泸州网站开发
  • 网站开发制作的流程营销软文的范文
  • 做qq主题的网站南京百度seo公司
  • 电商网站开发流程文档怎么样自己做网站接订单
  • 深圳网站seo哪家快自己做网站赚钱
  • 沙井网站设计湘潭网站建设 排名磐石网络
  • 彩虹云商城网站搭建wordpress 好的相册
  • 如何查询网站开发商建筑人才网招聘网官网首页
  • 使用什么工具什么步骤完成网站的设计与建设晨雷文化传媒网站建设
  • 做微信小程序和做网站网站类型后缀
  • centos7 wordpress网站福田网站开发