iOS 深入浅出block系列(1)

block是Objective-C中用c写的扩展功能,是一个带有自动变量的匿名函数。

一、理论基础

iOS4.0开始支持block,在编程过程中 block被oc看作对象,它封装了一段代码,可以在任何时候执行。对于局部变量是只读的。

定义:

声明实现写在一块:

int a = 10;
int (^aBlock)(int num) = ^(int num)
{
	return num * a;
};

先声明后实现

int a = 10;
int (^aBlock)(int num);
aBlock = ^(int num){
	return a*num;
};

 其中,定义了一个名字为aBlock的blocks对象,并携带了相关信息:

  1、aBlock 有两个形式参数,分别为int类型;

  2、aBlock 的返回值为int 类型;

  3、等式右边就是blocks的具体实现;

  4、^ 带边blocks声明和实现的标示(关键字);

      当然,你可以定义其他形式的block。e.g:无返回值,无形式参数等;

int a = 10;
int (^aBlock)(int num);
aBlock = ^(int num){
	return a*num;
};

block的访问权限

可以访问局部变量但是不能修改,如果想修改的话需要加关键字__block或者static.加了关键字__block的变量被称为block变量。

这里引出:static和const的区别:

1.const修饰的变量说明该变量是只读的。

2.static修饰的变量,这里static有两个作用,一是说明作用域,二是说明当前变量是静态存储的。

int a = 10;
int (^dBlock)(int) = ^(int num)
{
    a++;
    return num * a;
};

修改:

__block int a = 7;
 int (^dBlock)(int) = ^(int num)
 {
 a++;// work!
 return num * a;
 };

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值