您的位置:首页 - 教程 - IOS - 正文
iOS Block的简单使用

目录:本文将分三个部分讲解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传值就很简单了。未完待续


评论: