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

印刷网站开发策划书微信电子宣传册制作app

印刷网站开发策划书,微信电子宣传册制作app,网站建设liluokj,做团购网站的心得文章目录 OC对象 - Block解决循环引用前言1. 循环引用示例1.1 分析 2. 解决思路3. ARC下3.1 __weak3.2 __unsafe_unretained3.3 __block 4. MRC下4.1 __unsafe_unretain....4.1 __block 5. 总结5.1 ARC下5.2 MRC下 OC对象 - Block解决循环引用 前言 本章将会通过一个循环引用… 文章目录 OC对象 - Block解决循环引用前言1. 循环引用示例1.1 分析 2. 解决思路3. ARC下3.1 __weak3.2 __unsafe_unretained3.3 __block 4. MRC下4.1 __unsafe_unretain....4.1 __block 5. 总结5.1 ARC下5.2 MRC下 OC对象 - Block解决循环引用 前言 本章将会通过一个循环引用案例分析其原因以及在ARC、MRC下的解决方案 1. 循环引用示例 ZSXperson类 interface ZSXPerson : NSObjectproperty (nonatomic, assign) int age; property (nonatomic, copy) void(^block)(void);endimplementation ZSXPerson- (void)dealloc {NSLog(ZSXPerson - %s, __func__); }endmain.m 中初始化ZSXperson对象person创建person的block并在block里面访问person.age int main(int argc, const char * argv[]) {autoreleasepool {ZSXPerson *person [[ZSXPerson alloc] init];person.block ^ {NSLog(person.age is %d, person.age);};NSLog(---------------);}return 0; }运行 person不会销毁 1.1 分析 初始化ZSXperson对象person然后将block赋值给person的block此时person是强引用block在block中访问了person.age因为访问了局部变量所以block捕获了person xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -fobjc-arc -fobjc-runtimeios-13.0.0 main.m -o main-arm64.cpp此时block和person的关系是相互持有的关系 2. 解决思路 之所以叫循环引用其实就是相互之间的引用关系形成了环 解决方式就是断开某个引用关系打破这个环 3. ARC下 3.1 __weak int main(int argc, const char * argv[]) {autoreleasepool {ZSXPerson *person [[ZSXPerson alloc] init];__weak typeof(person) weakPerson person;person.block ^ {NSLog(person.age is %d, weakPerson.age);};NSLog(---------------);}return 0; }person正常销毁的 3.2 __unsafe_unretained int main(int argc, const char * argv[]) {autoreleasepool {ZSXPerson *person [[ZSXPerson alloc] init];__unsafe_unretained typeof(person) uuPerson person;person.block ^ {NSLog(person.age is %d, uuPerson.age);};NSLog(---------------);}return 0; }使用__unsafe_unretained也可以正常释放 __unsafe_unretained从命名看unsafe代表不安全unretained表示不会产生引用。不安全则表现在当引用的对象销毁时他不会把指针设置为nil因此容易有坏指针异常 3.3 __block int main(int argc, const char * argv[]) {autoreleasepool {ZSXPerson *person [[ZSXPerson alloc] init];person.age 10;__block typeof(person) strongPerson person;person.block ^ {NSLog(person.age is %d, strongPerson.age);strongPerson nil;};person.block();NSLog(---------------);}return 0; }使用__block正常销毁 需要注意的是使用__block必须调用block。因为使用__block修饰后在block里面需要置空如果没有调用block就没有置空操作它依然是循环引用状态无法销毁 未调用block 调用block后 4. MRC下 MRC不支持__weak 改为MRC 4.1 __unsafe_unretain… int main(int argc, const char * argv[]) {autoreleasepool {ZSXPerson *person [[ZSXPerson alloc] init];person.age 10;__unsafe_unretained typeof(person) weakPerson person;person.block [^ {NSLog(person.age is %d, weakPerson.age);} copy];NSLog(---------------);[person release];}return 0; }正常销毁 4.1 __block int main(int argc, const char * argv[]) {autoreleasepool {ZSXPerson *person [[ZSXPerson alloc] init];person.age 10;__block typeof(person) weakPerson person;person.block [^ {NSLog(person.age is %d, weakPerson.age);} copy];NSLog(---------------);[person release];}return 0; }正常销毁 MRC下block 里面无需将weakPerson设置为nil也能正常释放。这是因为MRC下__block不会对person产生强引用被__block修饰的对象类型ARC时会retainMRC时不会retain 相当于这根线不生效因此没有形成循环引用 5. 总结 5.1 ARC下 通常使用__weak来解决循环引用。使用__weak修饰的对象销毁后指针会自动设置为nil。__unsafe_unretained和__block虽然也可以解决环引用问题但是__unsafe_unretained在修饰的对象销毁后指针不会自动设置为nil因此如果还去使用这个对象就会出现异常。__block需要保证 block 有被调用否则还是会循环引用。 5.2 MRC下 使用__unsafe_unretained或者__block oubijiexi
http://www.hkea.cn/news/14385996/

相关文章:

  • 搜索引擎和门户网站的区别全球十大摄影作品
  • 广州网站开发招聘信息soso搜搜
  • 庐江住房建设局网站开发公司网签的流程
  • 兰陵网站建设网站建设软文推广
  • 翡翠原石网站首页怎么做做黑网站赚钱吗
  • 安徽省建设安全协会网站某商贸网站建设方案
  • 入境游旅游网站建设大连新图闻科技
  • 东莞做网站公司百度竞价推广课程
  • 庆阳网站设计 贝壳下拉wordpress主题academy
  • 个人网站怎样做超链接家在深圳坪山
  • 广告最多的网站响应式自助建站平台
  • 受欢迎的永州网站建设wordpress发文章的id怎么不连续
  • 旅游前 做攻略有什么网站好用网站的特效代码
  • 建设高端网站公司的目的google收录网站
  • 给企业做网站运营网站建设设计开发公司
  • 政务网站的建设原则网站建设投标文件
  • 比特币网站做任务手机怎么做程序
  • 网站建设的功能有哪些婚纱制作网站
  • 上海网站建设要多少钱wordpress标签生成器
  • 建网站多少费用织梦手机网站源码
  • 章丘环保网站建设 中企动力免费推广渠道
  • 如何做网站推广的方案设计wordpress建站打不开二级页面
  • 做项目网站深圳的网站建设公司 湖南岚鸿
  • 网站没有做301定向企业管理咨询合同书范本
  • 网站建设cms系统上海网站开发公司
  • 网站代码规范工商注册公司需要哪些材料
  • 做网站不给源码一键logo生成器免费
  • 绵阳网站建设联系电话国外推广渠道平台
  • 西安网站建设资讯丹东seo
  • 星裕建设网站根据一个网站仿做新网站是什么网站