黑马程序员技术交流社区
标题:
每日小结:OC数据类型--block
[打印本页]
作者:
崔石炫
时间:
2014-9-27 01:01
标题:
每日小结:OC数据类型--block
block
用途:保存代码块
block
标志:
^
block
与函数的相似之处:
*
可以保存代码
*
有返回值
*
有形参
参考代码:
#import <Foundation/Foundation.h>
typedef int (*FunctionPointer) (int , int); // 使用宏定义定义新类型FunctionPointer
typedef int (^BlockPointer) (int , int); // 使用宏定义定义新类型BlockPointer
int sum(int a , int b)
{
return a+b;
}
int main()
{
int (^sumBlock) (int , int); // 定义一个block变量sumBlock,有int类型返回值,接受2个int类型的形参
sumBlock = ^(int a , int b){
return a+b;
}; // 将代码块赋值给sumBlock
FunctionPointer fp = sum;
BlockPointer bp = ^(int a , int b) {
return a+b;
};
NSLog(@”%d” , sum(1 , 2));
NSLog(@”%d” , sumBlock(1 , 2));
NSLog(@”%d” , fp(1 , 2));
NSLog(@”%d” , bp(1 , 2));
// 4个NSLog方法打印相同结果:3
void test();
test(); // 打印:a = 1 b = 3
return 0;
}
void test()
{
int a = 1;
__block int b = 2;
void (^myBlock) () = ^{
NSLog(@”a = %d” , a); // block内部默认可以访问外部变量
//a++; // block内部默认不能修改外部变量
b++; // 局部变量加上__block关键字,就可以在block内部修改
NSLog(@”b = %d” , b);
}
myBlock();
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2