您的位置:首页 > 移动开发 > Objective-C

Objective-C:自定义Block函数

2015-10-17 18:41 375 查看
Block函数是一种类似于函数指针的函数,程序员只需要把需要操作的代码封装到定义的block中即可,以后需要使用时,直接调用,非常方便....

举例如下:

第一种形式:自定义一个无返回值而且无参数的block

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool
{

//第一种形式:自定义无参数的block函数类型
typedef void (^FirstBlock)(void);

//创建block,并将代码封装其中
FirstBlock block = ^(void){
for (int i=0; i<5; i++)
{
NSLog(@"i:%d",i);
}
};

//调用block函数
block();

return 0;
}


运行结果:

2015-10-17 18:38:35.317 自定义Block函数[2507:145127] i:0
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:1
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:2
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:3
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:4
Program ended with exit code: 0


第二种形式:自定义一个无返回值但是有参数的block

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool
{
//第二种形式:自定义有参数的block函数类型
typedef void (^SecondBlock)(int);

//创建block,并将代码封装其中
SecondBlock block = ^(int length){
for (int i=0; i<length; i++)
{
NSLog(@"i:%d",i);
}
};

//调用block函数
block(5);
}

return 0;
}


运行结果:

2015-10-17 18:38:35.317 自定义Block函数[2507:145127] i:0
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:1
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:2
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:3
2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:4
Program ended with exit code: 0


第三种形式:自定义有返回值但是无参数的block函数类型

typedef int (^ThirdBlock)(void);
static int sum = 0;
//创建block,并将代码封装其中
ThirdBlock block3 = ^(){
for (int i=0; i<5; i++)
{
sum = sum + i;
}
return sum;
};

//调用block函数
NSLog(@"sum=%d",block3());


运行结果:

2015-10-25 16:43:21.171 自定义Block函数[3172:151234] sum=10
Program ended with exit code: 0


第四种形式:自定义有返回值而且有参数的block函数类型

//第四种形式:自定义有返回值而且有参数的block函数类型
typedef int (^FourBlock)(int);
//创建block,并将代码封装其中
FourBlock block4 = ^(int length){
return length;
};

//调用block函数
NSLog(@"block4=%d",block4(5));
}


运行结果:

2015-10-25 16:43:21.171 自定义Block函数[3172:151234] block4=5
Program ended with exit code: 0


最后还有一个知识点:



所以,对block声明为属性时,使用copy修饰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: