美文网首页
iOS中的block块存储位置

iOS中的block块存储位置

作者: 紫云夕月 | 来源:发表于2019-05-18 09:24 被阅读0次

block块根据情况有两种可能的存储位置,一种存在代码区,一种存在堆区。

1、如果block块没有访问处于栈区的变量(比如局部变量),也没有访问堆区的变量(比如我们alloc创建的对象),那就存在代码区,即使访问了全局变量,也依然存在代码区。

2、如果访问了栈区或者堆区的变量,那就会被存在堆区(实际存在栈区,ARC下会自动拷贝到堆区)。

关于存在堆区的情况,有一点需要注意的是,堆区是不断变化的,不断地有变量的创建和销毁,如果block块没有强引用,那也随时可能被销毁,这就导致一旦在销毁时访问block块,程序就会崩溃,所以,在定义block时,内存修饰最好用strong或者copy。而且在使用时也最好先判断一下block是否为空,比如:

copy不可变变量:等同于strong,还是浅拷贝,例如NSString对象。

因为block是一段代码,即不可变的,所以并不会深拷贝。

相关文章

  • iOS中的block块存储位置

    有了上面一篇《iOS开发中的内存分配与分区》的说明,现在可以对iOS中block的存储位置做一下说明了。 这里说明...

  • iOS中的block块存储位置

    block块根据情况有两种可能的存储位置,一种存在代码区,一种存在堆区。 1、如果block块没有访问处于栈区的变...

  • IOS基础Block

    参考: iOS中block的使用、实现底层、循环引用、存储位置 一:Block的使用格式和用途 1,声明和定义格式...

  • block介绍内存管理修饰

    block块存储位置 block块根据情况有两种可能的存储位置,一种存在代码区,一种存在堆区。 1、如果block...

  • iOS中block块的存储位置&内存管理

    引 block是iOS开发中一种使用方便的代码块,但是在使用过程中也很容易不小心就造成问题,本文讲解其存储位置所决...

  • 问题:根据Block在内存中的位置谈谈Block

    根据Block在内存中的位置分为三种: 全局Block(_NSConcreteGlobalBlock)----存储...

  • iOS Block实现原理

    系列文章:iOS Block概念、语法及基本使用iOS Block __block说明符iOS Block存储域及...

  • iOS-2 Block

    block块 系列文章: iOS Block浅浅析 - 简书 iOS Block实现原理 iOS Block __...

  • iOS Block __block说明符

    系列文章:iOS Block概念、语法及基本使用iOS Block实现原理iOS Block存储域及循环引用 上一...

  • iOS之Block

    参考文: 【简书】一篇文章看懂iOS代码块Block 【简书】iOS block中weakSelf和strongS...

网友评论

      本文标题:iOS中的block块存储位置

      本文链接:https://www.haomeiwen.com/subject/ahuzaqtx.html