博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于OC中的block自己的一些理解(一)
阅读量:4700 次
发布时间:2019-06-09

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

一、关于block

1、block的作用:保存一段代码。

2、苹果官方推荐的一种语法,类似于C语言的函数,但是比函数更加灵活。

3、^是block语法的标识。

二、block的用法

1)无返回值无参数

  

1 - (void)myFirstBlock 2 { 3     //1.定义block 4     void (^myblock)() = ^{ 5         NSLog(@"无参数无返回值"); 6     }; 7     //2.调用block 8     myblock(); 9     10 }

输出结果:

2016-02-18 09:56:50.124 01-block[750:25107] 无参数无返回值

 2)有参数没有返回值

- (void)mySecondBlock{    //1.定义block    void (^mySecondBlock)(int,int) = ^ (int num1,int num2){        NSLog(@"有参数无返回值:%d",num1 + num2);    };    //2.调用block    mySecondBlock(2,3);}

 输出结果:

2016-02-18 10:03:22.221 01-block[811:30160] 有参数无返回值:5

 3)有参数有返回值

1 - (void)myThirdBlock 2 { 3     //1.定义block 4     double (^myThirdBlock)(double,double) = ^ (double r1,double r2){ 5         return r1 + r2; 6     }; 7     //2.调用block 8      double r3 = myThirdBlock(1.1,2.2); 9     NSLog(@"有参数有返回值:%f",r3);10 }

输出结果:

2016-02-18 10:06:42.615 01-block[861:32505] 有参数有返回值:3.300000

三、block语法的格式

四、block的注意点

1)Block内部可以访问外部变量;

2)默认情况下,Block内部不能修改外部的局部变量

3)给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改

示例代码如下:

1 - (void)myFourBlock2 {3     int num = 5;4     void (^myFourBlock)() = ^{5     6         num = 6;7         NSLog(@"%d",num);8     };9 }

如果写成上面的代码,Xcode会在第六行“num = 6;”报错:missing __block type specifier;

修改代码如下:

- (void)myFourBlock{    __block int num = 5;    void (^myFourBlock)() = ^{            num = 6;        NSLog(@"%d",num);    };    myFourBlock();}

输出结果:

2016-02-18 10:25:02.195 01-block[1016:45943] 6

 代码虐我千百遍,我待代码如初恋!

转载于:https://www.cnblogs.com/fengzhihao/p/5197371.html

你可能感兴趣的文章
[恢]hdu 2027
查看>>
论文-GoogleNet : Going Deeper with Convolutions
查看>>
51Nod - 1247 可能的路径
查看>>
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory的解决办法
查看>>
Linux总结--vi与vim
查看>>
一些好用的工具网站
查看>>
jxl简析2 [ http://www.emlog.net/fei ]
查看>>
Linux命令--文件管理
查看>>
webform初识
查看>>
Java设计模式7:适配器模式
查看>>
python之函数
查看>>
2-5查找字典公共键
查看>>
windows使用文件服务器搭建Git服务器
查看>>
markdown 博客园语法测试
查看>>
Python读写操作Excel模块_xlrd_xlwt_xlutils
查看>>
isearch5 index,attribute和summary。
查看>>
Java CAS 和ABA问题
查看>>
如何Spring Cloud Zuul作为网关的分布式系统中整合Swagger文档在同一个页面上
查看>>
ThreadParameter -线程局部变量工具类
查看>>
Centos 安装 Moosefs文件系统
查看>>