美文网首页精通blockiOS blockblock
block 在MRC对变量的影响

block 在MRC对变量的影响

作者: 三只老虎 | 来源:发表于2016-08-15 22:29 被阅读27次

在MRC:block访问外部的变量

定义一个空的Block-----block保存在全局/常量区

Block内部访问外部局部变量

首先外部变量保存在栈区

当block内部访问外部变量的时候,这个变量依然会在栈区

(地址变化了,内存空间没变)

Block会保存在栈区

当访问完外部变量的时候,这个外部变量依然会在栈区

Block 修改外部变量

外部变量同样会保存在栈区在栈区

在内部去修改外部变量,把外部的变量用__block修饰,才可以修改,修改后的这个变量依然会在栈区在栈区

当变量在block内部修改完成之后,变量保存区没有发生变化,依然在栈区//在栈区

经过上面三步的折腾,

外部变量的地址始终没有发生变化,并且都是在栈区保存的

相关文章

  • block 在MRC对变量的影响

    在MRC:block访问外部的变量 定义一个空的Block-----block保存在全局/常量区 Block内部访...

  • Block 之 block引用外部对象

    前言:block变量捕获 1、block引用外部对象 那下面就MRC环境,我们对三种类型的block来进行分析:在...

  • 5.Block的内存管理 内存管理

    内存管理 无论当前环境是ARC还是MRC,只要block没有访问外部变量,block始终在全局区 MRC情况下 b...

  • Block学习总结(三)

    关于block的存储域 一、 block变量存储域 1. ARC和MRC不同的存储情况 通过对block本质的探究...

  • Block

    Block的变量捕获(capture) Block的类型 如何区分Block的类型 MRC:Global:没有访问...

  • iOS知识复习笔记(8)---block底层原理

    block 类型 在MRC环境下 1.全局block:如果没有使用外部auto变量,或者只使用全局变量或是静态变量...

  • Block

    block的内存管理: 无论当前环境下是arc还是mrc,只要block没有访问外部变量,block始终在全局区 ...

  • ios bolck理解

    blcok分为全局blcok,堆block,栈block MRC只要block没有访问外部变量,就是全局block...

  • Block

    Block block内存管理 无论是MRC还是ARC,只要block没有访问外部变量,blokc始终在全局区 M...

  • iOS面试题-block

    block的内存管理 无论当前环境是ARC还是MRC,只要block没有访问外部变量,block始终在全局区 MR...

网友评论

    本文标题:block 在MRC对变量的影响

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