标签:
目录:本文将分三个部分讲解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传值就很简单了。未完待续
标签:
原文地址:http://www.cnblogs.com/RiversMa/p/5483227.html