block主要解決反向傳值和傳值問題
1.block申明的公式 返回值類型 (^名字)(參數(shù)列表);
2.block實現(xiàn)的公式 名字= ^(參數(shù)列表){};
3.局部變量 定義一個圖片的名字的block
void (^imageNameBlock)(NSString *imageName);//申明
__block UIImage *image; //iamge == nil 如果想修改外部變量的值 需添加__block修飾 也就是說如果要在block內(nèi)部改變外部變量的狀態(tài)時,需要使用__block修飾
4.實現(xiàn)block
imageNameBlock = ^(NSString *imageName){//實現(xiàn)
image = [UIImage imageNamed:imageName];
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
};
5.調(diào)用block
imageNameBlock(@"photo.png");//調(diào)用
反向傳值:
1.在需要傳值的類里面寫block,即聲明
@PRoperty (nonatomic,copy)void (^block)(NSString *content);//block是分配在棧里面的,不需要程序員管理內(nèi)存
2.需要接收值的地方實現(xiàn)block
NextViewController *nextView = [[NextViewController alloc]init];
nextView.block = ^(NSString *content){
NSLog(@"%@",content);
labelTextBlock(content);
};
3.在需要傳送值的地方 調(diào)用block
block(@"sfasfaklgjgjkdsjkns");
新聞熱點
疑難解答