block主要解决反向传值和传值问题
1.block申明的公式 返回值类型 (^名字)(参数列表);
2.block实现的公式 名字= ^(参数列表){};
3.局部变量 定义一个图片的名字的block
void (^imageNameBlock)(NSString *imageName);//申明
__block UIImage *image; //iamge == nil 如果想修改外部变量的值 需添加__block修饰 也就是说如果要在block内部改变外部变量的状态时,需要使用__block修饰
4.实现block
imageNameBlock = ^(NSString *imageName){//实现
image = [UIImage imageNamed:imageName];
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
};
5.调用block
imageNameBlock(@"photo.png");//调用
反向传值:
1.在需要传值的类里面写block,即声明
@property (nonatomic,copy)void (^block)(NSString *content);//block是分配在栈里面的,不需要程序员管理内存
2.需要接收值的地方实现block
NextViewController *nextView = [[NextViewController alloc]init];
nextView.block = ^(NSString *content){
NSLog(@"%@",content);
labelTextBlock(content);
};
3.在需要传送值的地方 调用block
block(@"sfasfaklgjgjkdsjkns");