- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
block的一些简单分析
//block是一个匿名函数 //Block定义分为三个部分:返回值类型,参数列表,block实体部分{} /** 返回值类型 (^block名字)(参数)=^ { 如果有返回值,那么使用return; } */ //OC语言中有三种block /** *_NSConcreteGlobalBlock:全局静态 block 不会访问任何外部变量 *_NSConcreteStackBlock:保存在栈区的block,当函数返回时会被销毁 *_NSConcreteMallocBlock:保存在堆区 block 引用计数为0时,会被销毁; */// //第一问:在block内部是否可以访问外部变量 答:可以//int i=0;//NSLog(@外部%p,i);// //第三问:内外变量地址是否一样// //答:不一样// void(^block1)()=^void()// {//NSLog(@内部访问外部变量%d,i);// //第二问:在block内部你能否改变外部变量的值// //答: 不可以// //i=20;错误//NSLog(@内部%p,i);// };// block1();//// //第四问:如果我们想改变外部变量怎么办// //1:使用static全局修饰// //第五问:不允许使用全局修饰// //答: 使用__block 杠杠两个杠//block与blok外部定义的变量之间的关系,在block中可以访问局部变量 不能修改//block与__block之间修饰的局部变量之间的关系,可以修改可以访问//block与static修饰的静态变量关系可以访问可以修改// 举例分析: __block int i=0; int j=0; int *q=j; int* p =i; NSLog(@\n1---外部i=%d,j=%d,i的地址%p,i指针p的地址%p,q的地址%p,i,j,i,p,q); void(^b1)()=^void() { *p=*p+1; *q=*q+1; NSLog(@\n2---内部i=%d,j=%d,i的地址%p,i指针p的地址%p,q的地址%p,i,j,i,p,q); }; b1(); i=i+1; j=j+1; NSLog(@\n13---外部i=%d,j=%d,i的地址%p,i指针p的地址%p,q的地址%p,i,j,i,p,q); /** 结果如下 1---外部i=0,j=0,i的地址0x7fff5e252df8, i指针p的地址0x7fff5e252dc8, q的地址0x7fff5e252dd0 2---内部i=0,j=0,i的地址0x7ffb1bc184f8, i指针p的地址0x7ffb1bc3a078, q的地址0x7ffb1bc3a080 3---外部i=1,j=2,i的地址0x7ffb1bc184f8, i指针p的地址0x7fff5e252dc8, q的地址0x7fff5e252dd0 依次分析: __block修饰的 i 在block内部复制他的内容重新开辟了空间,并且让他也变成和内部一样的地址, 也就是也可以访问也可以修改 *p是i原来的地址上的值改变了也不会影响新的地址上的值 最后执行block内部的时候i=0(从原来的地方拷贝的)出来后加1变成1; j 未被修饰 内部打印是拷贝过来的换了(开辟)空间存的值0,*q=*q+1这一步里面q变量在内部换了自己地址但是存的内容是j的值地址所以改变了外部变量j(0)的值(0+1) 出了block j的值变成1再加1最后是外部打印变为2 j, p, q,这三个变量均没有被__block修饰所以在内部会开辟空间把值复制过去从而进行访问,出来后还是原来的地址 *///__weak和__block //1__block在ARC 和 MRC下都能使用 _weak只能在ARC下 //2__weak只能修饰对象__block都可以修饰 //3__block在block里面可以重新复制.__weak不可以 //4_block引起引用计数_weak不会 //block写成copy 1是为了安全 2是从栈区拷贝到堆区block在栈区存在时间随生命周期,在堆区我们随时调用云之君兮鹏云之君兮鹏云之君兮鹏
您可能关注的文档
- 北京中考英语350高频单词.doc
- 1.英语中的那些偏旁--构词法.docx
- 外研社 必修一 MODULE 4 A SOCIAL SURVEY MY NEUGHBOURHOOD.doc
- 中、高考构词法的讲解及用法.doc
- 第23讲Module 5 A Trip Along the Three Gorges.docx
- 【雅思初级】重要后缀+前缀总结.doc
- 英语基础:词根、词缀、介词、冠词、常用口语(已整理好可直接打印).doc
- 高中必修一词汇循环复习单.doc
- 1 英语构词法汇总及练习.doc
- 基英精读单词.doc
- 2025年开放银行数据共享合规在金融行业信用体系建设中的应用报告.docx
- 骆驼祥子读书笔记作文14篇范文.docx
- 工业互联网平台网络流量整形技术助力工业自动化系统稳定性提升报告.docx
- 2025年航空发动机维修技术创新与成本控制市场分析报告.docx
- 2025年农业灌溉智能化对农业产业链的影响研究.docx
- 2025年二手潮品信用评级体系改进与创新路径.docx
- 2025年二手奢侈品市场鉴定标准与交易规范行业市场细分领域投资建议.docx
- 基于大数据的2025年智慧农业温室项目市场供需分析报告.docx
- 露营地智慧管理平台构建:推动露营旅游产业转型升级.docx
- 工业互联网平台网络安全防护技术创新案例剖析.docx
最近下载
- 肯尼亚建筑市场行业报告.pptx
- 浙江杭州余杭交通集团有限公司招聘笔试题库2023.pdf VIP
- 人工胆囊、人工胆囊设备和人工胆囊在胆囊手术中的应用.pdf VIP
- 重力与弹力高一上学期物理人教版2019必修第一册+.pptx VIP
- 胃癌的诊治现状与进展.pptx VIP
- 数控压装压力机 第2部分:技术条件.docx VIP
- 【课件】匀变速直线运动速度与时间的关系+课件-高一上学期物理人教版(2019)必修第一册.pptx VIP
- XX医院职能部门监管手术、麻醉授权管理督导、检查、总结、反馈及持续改进记录表.pdf VIP
- 电力调度数据网络接入技术规范及网络拓扑图.doc VIP
- ZZGA高频开关整流器使用说明书.doc
文档评论(0)