下边是代码块的定义及使用方法
//block
作为函数的参数
//
函数返回值类型
函数名
(block
的声明格式
)
int fun( int (^block)( int a, int b)) // 回调
{
return block(1,2);
int fun( int (^block)( int a, int b)) // 回调
{
return block(1,2);
}
//block
声明格式:返回值类型
(^block
名字
)(
形参列表
)
int
(^myFun)();
//1.block 实现 :block 名字 = ^( 形参列表 ){};
myFun = ^(){
return 1;
};
int a = myFun(); // 调用 :block 名称 ( 实参列表 ), 有返回值的 block, 可以用一个变量进行接收
NSLog ( @"%d" ,a);
//2. 有返回值,有形参,声明和实现放一起
int (^myBlock)( int a, int b) = ^( int a, int b){
return a+b;
};
NSLog ( @"%d" ,myBlock(10,20)); // 调用
//3. 返回值类型是 NSString
NSString *(^myBlock1) ( NSString *s) = ^( NSString *s){
NSLog ( @" 字符串 %@" ,s);
return s;
};
myBlock1( @"123456" );
//4. 有一个局部变量,要在 block 进行值的改变 , 必须定义一个 __block + 变量类型 的变量
__block int b = 0;
void (^myBlock2)() = ^(){
b++;
};
myBlock2();
//1.block 实现 :block 名字 = ^( 形参列表 ){};
myFun = ^(){
return 1;
};
int a = myFun(); // 调用 :block 名称 ( 实参列表 ), 有返回值的 block, 可以用一个变量进行接收
NSLog ( @"%d" ,a);
//2. 有返回值,有形参,声明和实现放一起
int (^myBlock)( int a, int b) = ^( int a, int b){
return a+b;
};
NSLog ( @"%d" ,myBlock(10,20)); // 调用
//3. 返回值类型是 NSString
NSString *(^myBlock1) ( NSString *s) = ^( NSString *s){
NSLog ( @" 字符串 %@" ,s);
return s;
};
myBlock1( @"123456" );
//4. 有一个局部变量,要在 block 进行值的改变 , 必须定义一个 __block + 变量类型 的变量
__block int b = 0;
void (^myBlock2)() = ^(){
b++;
};
myBlock2();
NSLog(@"%d",b);
//block
作为形参
int (^myBlock4)( int a, int b) = ^( int a, int b){
return a+b;
};
int (^myBlock4)( int a, int b) = ^( int a, int b){
return a+b;
};
NSLog
(
@"%d"
,
fun
(myBlock4));