OC_Block块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC_Block块相关的知识,希望对你有一定的参考价值。
block
===================================================
需要理解的知识
1.block基本使用
2.block传值
===================================
1.block基本使用
block是一种数据类型,利用数据类型定义变量来保存block,效率高,需要定义变量保存.
block用来封装代码,保存一段代码
block的标志^
block和函数相似:
1可以保存代码
2有返回值
3有形参
4调用方式相似
区别:函数编译时候就定义好了代码,block是程序运行过程中凭空产生代码
1).如何定义block变量
有参数,返回值类型为int
int (^sumBlock)(int, int);
当做参数的时候
(int (^)(int, int)) sumBlock;
无参数,返回值类型为空
void (^myBlock)();
2).如何利用block封装代码
^(int a, int b){
return a + b;
};
3).block访问外部变量问题
block内部可以访问外部的变量
默认情况下,block内部不能修改外部的变量
给局部变量加上__block关键字,这个局部变量就可以在block内部修改
4).利用typedef定义block类型
typedef int (^MyBlock)(int, int);
//以后就可以用MyBlock这种类型来定义block变量
MyBlock sumBlock = ^(int a, int b){
return a + b;
};
MyBlock minusBlock = ^(int a, int b){
return a - b;
};
MyBlock multipyBlock = ^(int a, int b){
return a * b;
};
=============================
2.block传值
通过block传值可以实现回调
block实现回调的过程:主动方调用被动方的方法,被动方再调用主动方的block
【注】block由主动方实现,由被动方调用;主动方调用被动方的方法让被动方做事情。被动方回调主动方的block反馈结果
以上是关于OC_Block块的主要内容,如果未能解决你的问题,请参考以下文章