block的用法, 全局变量
<span style="font-size:24px;">#import <Foundation/Foundation.h> //在其他文件定义的全局变量如果想在本文件中使用,则需要在本文件的main函数外部加上关键字extern + (int d),这样就可以使用其他文件中定义的全局变量; //在两个不同的.m文件中同时定义了同一个名称的变量,如果想在各自的文件中使用,互不影响,那么只要把他们在各自的文件中定义成一个静态全局变量就可以了,不然,两个文件(.m)同时编译,会重复,从而出错; int d = 10;//全局变量 int main(int argc, const char * argv[]) { @autoreleasepool { //int (^)(int x, int y) block变量的类型 //block-- block变量的名字 /* ^(int x, int y) { return x + y; }; --- block 变量的初值,block用来存储函数,所以给block变量赋值时,赋的是整个函数的实现 */ int (^block)(int x, int y) = ^(int x, int y) { return x + y; }; //当把函数的实现赋给block变量之后,block变量就可以当作函数名来使用 //求和 int sum = block(5, 10); printf("sum = %d ", sum); //当在block内部使用block外部定义的局部变量时,如果变量没有被__block(两个下划线)修饰,则在block内部是readonly的,不能对他进行修改,如果想修改,变量前必须要加__block //__block的作用告诉编译器,编译时,在block内部不要把外部变量当作常量来使用,还是当作变量使用 //如果在block中访问全局变量,就不需要__block的修饰 //__block int c = 12; int (^block1)(int x, int y) = ^(int x, int y) { d = 12; return x * d; }; //最大值 int maxValue = block1(12,16); printf("maxValue = %d ", maxValue); int (^block2)(int x, int y) = ^(int x, int y) { return x < y ? x : y; }; //求最小值 int minValue = block2(12,16); printf("minValue = %d ", minValue); //类型重定义 typedef void (^Block)(); //打印 Block block4 = ^() { printf("vjmhvm"); }; block4(); } return 0; </span>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。