block的语法学习

一、首先学习block的语法定义

block的格式:^(返回值类型 参数){ 表达式 } 其中,如果没有返回值,则返回值类型和参数可以省略

block的变量格式: 返回值类型(^变量名称)(参数类型,参数类型,…) 

其中,如果没有返回值,则返回类型为void,参数可以有多个,如果没有,则写成()

我们可以举个例子来讲

int ( ^ blockName) (int , NSString * )=^( int para1, NSString *para2 ){
return 1;
}

//int ( ^ blockName) (int , NSString * )的意思就是定义了一个名字为blockName的block,它有两个参数,一个int的返回值

上面的例子是有参数的,下面我们举个没有参数的

void ( ^ blockName )( )=^{
NSLog ( @"blockName " );
}

//没有返回值的,返回参数类型必须写成void

二、使用typedef

由于block的声明比较复杂,建议使用typedef来声明block

比如我们声明一个有参数的block

typedef int ( ^ blockName ) ( int ,NSString *)
blockName bckName=^( int para1, NSString * para2){
return 1;
}

声明一个没有参数的block

typdef int ( ^ blockName )( )
blockName bckName=^{
retun 1;
}

三、block作为参数的写法

1、采用C语言的写法

typdef int ( ^ABlock )( )
void cFunc( void(^blockName)( ))或者 void cFunction( ABlock block)

block作为返回值的写法:

int ( ^( fun( ) ) ( int ) {
return ^( int count ){ return count; };
}

或者

ABlock fun( ){
return ^( int count ){ return count; };
}

2、采用OC的写法

-(void)OcFunc:(void(^)( )) blockName otherPara:(ABlock) block{
表达式……
}

property的写法

@property (nonatomic ,copy ) int ( ^ block )( int a) //采用C的写法,不能采用OC的写法
@property (nonatomic ,copy ) ABlock block;

以block作为返回值的写法

-( int ( ^ ) ( int )) blockBack{
return ^( int count){ return count ;};
}

参考文献

http://www.dahuangphone.com/dv_rss.asp?s=xhtml&boardid=8&id=85&page=3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值