黑马程序员IOS-OC语言-Block

来源:互联网 发布:linux中怎么查看主机ip 编辑:程序博客网 时间:2024/05/30 23:54

——- android培训、java培训、期待与您交流! ———-


Block

Block : 是一种数据类型,封装了一段代码,可以在任何时候执行。

Block 定义 :返回值类型 (^自定义Blocks对象)(参数类型表) = ^(参数表:形参){    封装的代码;};例如:int (^MySum)(int , int) = ^(int a ,int b){    return a + b;};----------// 也可以先用 typedef 先声明类型,在定义变量赋值typedef int (^Operation)(int , int);MySum sum = ^(int a , int b){    return a + b;};

尽量适用 typedef 定义类型,提高扩展性

Block 可以访问局部变量,但是不能修改。如果要修改需要在定义变量时加关键字 : __block


函数指针、Block的格式对比

函数指针    返回值类型 (*指针变量名)(参数类型表,只是类型列表);—————Block    返回值类型 (^Block变量名)(参数类型表,只是类型列表);—————在分别赋值即可:    函数名赋值给函数指针    Block代码块赋值给Block变量 :  ^{ …} 的东东

当两端循环引用的时候,解决方案:
1> ARC
1端用strong,另1端用weak

2> 非ARC
1端用retain,另1端用assign


——- android培训、java培训、期待与您交流! ———-

0 0
原创粉丝点击