OC学习笔记10--Block的概念与使用方式
来源:互联网 发布:手机信号防干扰软件 编辑:程序博客网 时间:2024/05/17 00:05
#import <Foundation/Foundation.h>// 利用typedef 方便定义Block类型变量typedef int (^SumBlo)(int,int);typedef SumBlo (^GetBlo)(SumBlo);int main(){int outA=5,sum;//变量声明带上__block表明在Block中可修改该变量__block outB=10;SumBlo sumBlo=^(int a,int b){return a+b;};// 该Block参数为另一个Block类型,返回值也是一个Block类型GetBlo getBlo=^(SumBlo sb){//Block内可访问外部局部变量,//但是只能修改以__block声明的外部局部变量outB=sb(outA,outB);return sb;}// 通过变量名调用Block,执行Block中的代码段,并获得返回值SumBlo sumBlo2=getBlo(sumBlo);BOOL b=sumBlo2==sumBlo;sum=sumBlo2(outA,outB);NSLog(@"sumBlo2_equals_sumBlo=%d,outA=%d,outB=%d,sum=%d",b,outA,outB,sum);return 0;}
Block:
概念:封装了一段待执行的代码段,该代码段可以有形参和返回值,
也可以作为其他函数、方法或Block的参数或返回值,
使用Block类型变量调用后执行代码段;
代码形式:
^(形参列表)
{
代码段...
return XXX;
};
Block类型变量:
类似指向函数的指针,指向一个Block,
通过 变量名(参数) 方式执行Block中的代码段;
声明方式:
返回值类型 (^变量名)(参数类型);
例: void (^myBlock)(int,NSString *);
利用typedef 方便声明:
typedef void (^MyBlo)(int,NSString *);
MyBlo blo=^(int a,NSString *str)
{
.....
};
Block代码段中访问外部变量:
可以访问外部局部变量,
默认情况无法修改外部局部变量,
外部局部变量声明中加上 __block 即可在Block中修改;
0 0
- OC学习笔记10--Block的概念与使用方式
- 学习笔记:OC的数据类型 block 使用
- 黑马程序员---OC学习笔记之block的使用场景
- OC学习笔记十---Block与@protocol
- block 的概念与使用
- 黑马程序员-[OC]学习之旅-block和protocol的概念及使用
- oc block的使用
- OC--Block的使用
- OC学习笔记之block
- OC学习笔记八 Block
- swift 学习笔记3 -- OC的block与swift的闭包
- 【OC笔记】block的用法
- 黑马程序员---OC学习笔记之block的基本概念
- OC 中的block的使用与它的实现底层
- OC学习笔记19--copy与mutableCopy的使用
- OC------block块的使用
- OC中Block的使用
- OC block的简单使用
- markdown语法学习
- ios UIWebView 加载本地html,js,css文件的问题
- 在C51及C251中变量空间分配的方法及注意事项
- C#高级编程六十七天----LINQ提供程序
- 基于struts 的FormFile实现文件的上传功能
- OC学习笔记10--Block的概念与使用方式
- 【Objective-C编程】 Must explicitly describe intended ownership of an object array parameter异常报错解决方案
- 文章标题
- 序列的自相关和互相关计算
- 并查集
- UVA 537 Artificial Intelligence?
- Android中的日期选择器
- JAVA设计模式之工厂模式 代码是原创
- protobuf+vs2013编译安装