在宏定义中使用 block

1.先定义一个宏

#define DYTestBlock(param1, block)\
NSLog(@"param1 : %@", (param1));\
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(9 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{\
    int blockParam1 = 1;\
NSString *blockParam2 = [NSString stringWithFormat:@"哈哈 : %@", param1];\
    block(blockParam1, blockParam2);\
});\

2.调用这个宏定义(有一下两种方式调用)

// - 方式1
    void(^block)(int, NSString *) = ^(int a, NSString *str) {
        NSLog(@"%d, %@", a, str);
    };

    DYTestBlock(@"xx",block);

// - 方式 2
    DYTestBlock(@"xx",^(int a, NSString *str) {
        NSLog(@"%d, %@", a, str);
    });
// - 方式三
    DYBlock dyBlock ^(int a, NSString *str) {
        NSLog(@"%d, %@", a, str);
    };

    DYTestBlock(@"xx",dyBlock);

猜你喜欢

转载自blog.csdn.net/qq_27074387/article/details/79815359
今日推荐