文档章节

Block 在不同情况下的变量存储区域

JasonMs
 JasonMs
发布于 2015/09/05 20:48
字数 344
阅读 422
收藏 3

一.如果只使用全局或静态变量或不使用外部变量, 那么Block块的代码会存储在全局区;
二.如果使用了外部变量, 在ARC中, Block块的代码会存储在堆区;
                                    在MRC中, Block快的代码会存储在栈区;
三.block默认情况下不能修改外部变量, 只能读取外部变量:
                                 在ARC中, 外部变量存在堆中, 这个变量在Block块内与在Block块外地址相同;
                                                外部变量存在栈中, 这个变量会被copy到为Block代码块所分配的堆中;
                                 在MRC中, 外部变量存在堆中, 这个变量在Block块内与Block块外相同;
                                                 外部变量存在栈中, 这个变量会被copy到为Block代码块所分配的栈中;
四.如果需要修改外部变量, 需要在外部变量前面声明 __block
                                 在ARC中, 外部变量存在堆中, 这个变量在Block块内与Block块外地址相同;
                                                外部变量存在栈中, 这个变量会被转移到堆区, 不是复制, 是转移.
                                 在MRC中, 外部变量存在堆中, 这个变量在Block块内与Block块外地址相同;
                                               外部变量存在栈中, 这个变量在Block块内与Block块外地址相同;

© 著作权归作者所有

共有 人打赏支持
JasonMs

JasonMs

粉丝 7
博文 49
码字总数 20597
作品 1
朝阳
程序员
私信 提问
《Objective-C高级编程》温故知新之"Blocks"

前言 很久前看了《Objective-C高级编程 iOS与OS X多线程和内存管理》这本书,但当时看起来晦涩难懂。最近利用下班时间重读了一遍,觉得还是得记录一下。毕竟每个阶段对相同的东西会有更深刻的...

Dwyane_Coding
2018/08/28
0
0
iOS进阶(一)block与property

iOS进阶(一)block与property 这篇读书笔记主要介绍了C语言内存分配、block疑难点、property的深入理解,自己对这三块做了系统性的总结,希望对你有所帮助。 C语言内存分配 Objective-C从名...

法斗斗
2018/05/06
0
0
iOS底层原理总结 - 探寻block的本质(一)

面试题 block的原理是怎样的?本质是什么? block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMutableArray,需不需要添加b...

xx_cc
2018/05/20
0
0
(二)Block之存储域 NSConcreteStackBlock,NSConcreteGlobalBlock,NSConcreteMallocBlock

相关文章 (一)Block的实质初探 (二)Block之存储域 NSConcreteStackBlock,NSConcreteGlobalBlock,NSConcreteMallocBlock (三)Block之截获变量和对象 (四)Block之 _block修饰符及其存...

madaoCN
2017/10/15
0
0
block本质探寻六之修改变量

说明: <1>阅读本文章,请参照前面的block文章加以理解; <2>本文的变量指的是auto类型的局部变量(包括实例对象); <3>ARC和MRC两种模式均适用; 一、无法修改的原因 //代码 很明显,强行给...

春天里的花骨朵
01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-13(Mybatis基本概念和简单的例子)

在mybatis初次学习Mybatis的时候,遇到了很多问题,虽然阿里云的视频有教学,但是视频教学所使用的软件和我自己使用的软件不用,我自己用的数据库是oracle数据库,开发环境是idea。而且视频中...

白话
今天
3
0
Java基础:String、StringBuffer和StringBuilder的区别

1 String String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。 String类的包含如下定义: /** The value is used for character storage. */private final cha...

watermelon11
今天
2
0
mogodb服务

部署MongoDB 官网: https://www.mongodb.com/download-center/community 创建mongo数据目录 mkdir /data/mongodb 二进制部署 wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x8......

以谁为师
昨天
5
0
大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞。在敦促每位用户尽快升级系统的同时,Debian团队还发布了Debian ...

linux-tao
昨天
4
0
PHP 相关配置

1. php-fpm的pool 编辑php-fpm配置文件php-fpm.con vim /usr/local/php/etc/php-fpm.conf //在[global]部分增加以下内容 include = etc/php-fpm.d/*.conf # 相当与Nginx的虚拟主机文件 “vho......

Yue_Chen
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部