博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
block(八)作用域
阅读量:5971 次
发布时间:2019-06-19

本文共 460 字,大约阅读时间需要 1 分钟。

//闭包

    NSString* s =@"123";

   void (^block)() = ^() {

       NSLog(@"%@",s);

    };

    block();// 1

    s =@"abc";

    block();// 2

 

结果:

123

123

//__block破坏了闭包,扩大了变量在块结构中的局部作用域为全局的

 

    __blockNSString* s = @"123";

   void (^block)() = ^() {

       NSLog(@"%@",s);

    };

    block();//3

    s =@"abc";

    block();//4

结果:

123

abc

 

 

首先,没有__block标识的变量,其状态会在块结构创建的时候,已经保存在了块里了.形成了独立的结构,内部变量外部都无法访问(闭包).利用c语言的解释 1可以理解为block1函数

void block1(){ 

NSString* s = @"123";

 NSLog(@"%@",s);

 }

而例2中__block标示的变量,会将变量的作用域变大.s相当于变成全局的作用域.

转载地址:http://howox.baihongyu.com/

你可能感兴趣的文章
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
使用dotenv管理环境变量
查看>>
Vuex学习
查看>>
bootstrap - navbar
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
ElasticSearch Client详解
查看>>
mybatis update返回值的意义
查看>>
expdp 详解及实例
查看>>
通过IP判断登录地址
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>