block(一)了解block

2018-11-29  本文已影响0人  周二头

block就是代码块组成的匿名函数,block是oc对于闭包的实现

1.可以嵌套定义,定义block方法和定义函数方法相似

2.block可以定义在方法内部或外部

3.只有调用block的时候,才会执行block内的代码

4.block本质是对象,使代码高聚合

定义block使用typedef

typedef  void(^KCBlock)(ViewController*);

block有三种类型

1.    __NSGlobalBlock__   静态block      全局

2.    __NSMallocBlock__   堆block         堆

3.    __NSStackBlock__   栈block           栈

!!全局块存在于全局内存中,相当于单例

!!栈块存在于栈内存中,超出其作用域则马上被销毁

!!堆块存在于堆内存中,是一个带引用计数的对象,需要自行管理其内存

int a = 10;//捕获外部变量

__block int a = 10;//__block修饰的可以在block内部修改a的值,__block是浅拷贝了一个值,内存地址改变了

//无参无返回block

void(^block)(void) = ^{

NSLog(@"hello block");

};//匿名函数

NSLog(@"第一种block%@",block);  //万物皆对象-->RAC万物皆signal

void(^twoblock)(void) = ^{

NSLog(@"hello block %d",a);

};//匿名函数

block();

twoblock();

NSLog(@"第二种block%@",twoblock);  

NSLog(@"第三种block:%@",^{

NSLog(@"%d",a);

});

上一篇下一篇

猜你喜欢

热点阅读