iOS block的概念及基本使用

一、block的概念:

(1),block是一个数据类型,跟int double float一样都是数据类型.所以我们是可以创建一个block类型的变量.
(2).block类型的变量中专门存储一段代码,这段代码可以有参数,可以有返回值.存储的代码段必须要指定代码是否有参数,是否有返回值.一旦指定,这个block就只能存储这样类型的代码,

二、block变量的声明初始化:

(1).声明

语法格式:

返回值类型 (^block变量的名称)(参数列表)

举例:

void (^block1)()//无返回值,无参数
int (^block2)(int num1,int num2)//int类型返回值i,两个int类型参数

(2).初始化(实现):
原理:写一段符合block要求的代码段,存储到block变量中

代码段的书写格式:

^返回值类型(参数列表){
代码段;
};

举例:

//无参数无返回值的代码段
^void(){
	NSLog(@"我是无参数无返回值的代码段");
};
//无参数无返回值的代码段
^int(10,10){
	NSLog(@"我是有参数有返回值的代码段");
};

代码段赋值给block变量

_block1 = ^void(){
	NSLog(@"我是无参数无返回值的代码段");
};

_block2 = ^int(n1,n2){
	int num = n1 + n2;
	NSLog(@"我是有参数有返回值的代码段");
	return num;
};

(3).block代码段调用:
语法格式:

block变量名(参数列表);

举例:

_block1();//执行完会输出:我是无参数无返回值的代码段

(4)关于block简写:
1.如果代码段的返回值为void的话,void可以省略,如:

void (^block1)() = ^(){
	NSLog(@"我是无参数无返回值的代码段");
};

2.如果代码段没有参数的话,括号也可以省掉,如:

int (^block3)() = ^int {
	NSLog(@"我是无参数省略括号的代码段");
	return 0;
};

3.声明block变量的时候,参数可以不写名称,如:
是声明的时候可以省略参数名.但是代码块的话还是要写的.

int (^block4)(int,int) = ^int(int n1,int n2) {
	NSLog(@"我是无参数省略括号的代码段");
	return n1+n2;
};

(5)block作为函数的返回值:

1,在.h文件下,定义一个新的数据类型

#import "Person.h"
typedef void (^winblock)();
//方法
-(winblock) ttt{
    void (^block1)(void) = ^ {
        NSLog(@"!!!");
    };
    return block1;
}
//调用
winblock t = [per ttt];
t();//输出

三、block与函数的区别:

相同点:都是封装一段代码
不同点:
1)block是一个数据类型,函数是一个函数
2)block可以作为函数的参数

block变量多在页面回调的时候使用,把block当做方法的参数使用,外界不调用,都是方法内部去调用,Block实现交给外界决定.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值