目錄:本文將分三個部分講解block塊的基本用法,由於本人水平有限,不足之處還望指正,謝謝!
一、block塊的基本用法:
相信大家都很熟悉了,下面直接上代碼:
//1,block初探,無參數,無返回值 void (^MyBlock)(void) = ^(void){ NSLog(@"2,打印出來了,我就是block,無參數,無返回值"); }; NSLog(@"1"); MyBlock(); //2,有參數,無返回值 void (^MyblockTwo)(int a) = ^(int a){ NSLog(@"@ = %d我就是block,有參數,無返回值",a); }; MyblockTwo(100); //3,有參數,有返回值 int (^MyBlockThree)(int, int) = ^int(int a,int b){ NSLog(@"%d我就是block,有參數,有返回值",a + b); return a + b; }; MyBlockThree(12,56);
以上三個是block最基本的用法,也是局部的block塊,就不多說了,這主要爭對初學者,主意block回調的時機。
二、block塊的進階用法:
我的代碼是在實現文件中
聲明:
- (void)getNameBlock:(void(^)(NSString *string))myBlockName;
實現:
- (void)getNameBlock:(void (^)(NSString *))myBlockName{
NSLog(@"我先走一步了哈");
[self laterGoBlock:myBlockName];
}
調用:
[self getNameBlock:^(NSString *string) {
NSLog(@"這次我小馬哥真走了哈,%@",string);
}];
看這時候我又定義了一個block,這個block是全局的,在.h文件中定義如下:
聲明:
- (void)laterGoBlock:(void(^)(NSString *))myBlockJC;
實現:
- (void)laterGoBlock:(void(^)(NSString *))myBlockJC{
myBlockJC(@"我是小馬哥,知道我的目的了吧");
}
看我的目的是在這個方法中實現block的回調,如果這你理解了,那麼不同界面用block傳值就很簡單了。未完待續