您的位置:首页 > 移动开发 > IOS开发

IOS基础之 (十二) Block

2016-03-05 13:04 429 查看

一 定义

Block封装了一段代码,可以在任何时候执行。

Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。

二 使用

1. 定义函数指针,然后在实现。

#import <Foundation/Foundation.h>

int (^max)(int,int);

int main(int argc, const char * argv[]) {

max = ^(int a,int b){

return a >b ? a:b;
};

int maxVal = max(5, 13);
NSLog(@"maxVal=%d" , maxVal );

return 0;
}


在第3行定义函数指针,在第7行实现函数指针,在12行调用函数指针。

2. 在定义函数指针的同时,并实现。

#import <Foundation/Foundation.h>

int (^max)(int,int) = ^(int a, int b){
return a > b ? a : b;
};

int main(int argc, const char * argv[]) {
int maxVal = max(5, 13);
NSLog(@"maxVal=%d" , maxVal );

return 0;
}


3.用typedef先声明类型,再定义变量进行赋值

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
typedef int (^max)(int,int);
max getMax = ^(int a, int b){
return a > b ? a:b;
};

int maxVal = getMax(5, 13);
NSLog(@"maxVal=%d" , maxVal );

return 0;
}


Block可以访问局部变量,但是不能修改。

int sum = 10;
int (^myBlock)(int) = ^(int x){
int result = sum++;
return x * x;
};


如果要修改就要在第一行加关键字:__block

__block int sum = 10;
int (^myBlock)(int) = ^(int x){
int result = sum++;
return x * x;
};


资料参考:
http://www.cnblogs.com/ljcgood66/p/4970628.html http://www.cnblogs.com/e8net/p/3750825.html http://www.cnblogs.com/goodboy-heyang/p/5240004.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: