block在oc中是一种基本的数据结构,基本的使用和其他的变量是一样的。
———-一般的简单步骤
1、block的定义
2、block的定义
3、block的值的设置
4、block的值的获取(或者调用)
下面是一个简单的使用,4个步骤会直接连贯使用
@autoreleasepool {
//程序执行到block,也就是代码块中的内容已经赋值给了相应的函数指针
void (^print_Message)(void)= ^(void){
NSLog(@"what is your name");
};
//这个就相当于赋值的内容,这里只是赋值,相当于给block这个类型的变量set的方法
//这里需要调用一下
print_Message();
}
下面是一个具体的步骤过程:
#import <Foundation/Foundation.h>
typedef void (^Print_Message)(void); //声明
int main(int argc, const char * argv[]) {
@autoreleasepool {
//通过前面的该改变,我们可以是西安了相应
Print_Message print_Message; //定义
//赋值
print_Message= ^(void){
NSLog(@"what is your name");
};
//类似get的方法,也就是获取block里面的值的时候就是调用
print_Message();
}
return 0;
}
//1、声明
//2、定义
//3、类似set方法设置值
//4、类似get方法获取值,就是调用
static 关键子的影响
@autoreleasepool {
static int outA = 8;
int (^myPtr)(int) = ^(int a){ outA = 5; return outA + a;};
int result = myPtr(3); //result的值是8,而不是11,因为outA是static类型的变量
NSLog(@"result=%d", result);
}