美文网首页很常
iOS使用宏定义函数和代码块

iOS使用宏定义函数和代码块

作者: 啸狼天 | 来源:发表于2021-02-20 09:19 被阅读0次

开发过程中碰到一个问题:就是父类中要向外发送通知,然后子类中或者其他类中来接收它。当然一般是把它写到类方法中去,但是有个问题,就是如果调用的类不是它的子类,就不能直接调用,当然也可以采用静态方法实现,我这里主要是想用宏定义来实现,下面我分别介绍使用宏定义函数和定义代码块的方式进行,废话不多说了,直接上代码:

使用宏定义函数实现

//定义
#define SendNotification @"SendNotification"
#define sendMessage(msg) \
({\
dispatch_async(dispatch_get_main_queue(), ^{\
    NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter];\
    [notificationCenter postNotificationName:SendNotification object:nil userInfo:@{@"msg":msg}];\
    });\
})

//使用
sendMessage(@"发个消息试试");

//有返回的宏函数定义
#define getSum(a,b) \
({\
(a+b);\
})

//使用
double sum = getSum(M_PI,M_E);

在宏定义中使用 block

//有返回的宏代码块定义
#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);

相关文章

  • iOS pch中定义使用宏定义函数和代码块

    一、objective-C项目pch文件中定义函数和代码块 使用宏定义函数实现 使用宏定义代码块实现 二、swif...

  • iOS使用宏定义函数和代码块

    开发过程中碰到一个问题:就是父类中要向外发送通知,然后子类中或者其他类中来接收它。当然一般是把它写到类方法中去,但...

  • iOS-#if插入DEBUG宏定义介绍

    iOS-#if插入DEBUG宏定义介绍 一: OC使用#ifdef代码块 Swift使用#if DEBUG代码块 ...

  • 2018-11-07 宏定义提高可读性

    使用宏定义封装判断条件和读写函数,使代码可读性提高不少。带参数的宏定义,参数只能全词匹配。 明天继续函数和宏定义封装。

  • iOS-#ifdef DEBUG宏定义介绍

    iOS-#ifdef DEBUG宏定义介绍 一.#ifdef DEBUG代码块 #ifdef DEBUG // D...

  • 宏定义函数与内联函数

    宏定义函数 在c程序中,可以使用宏定义函数代替简单的函数,这样提高程序效率,预处理器用复制宏代码的方式代替函数调用...

  • iOS Xcode自定义代码块以及迁移

    iOS Xcode自定义代码块以及迁移 iOS Xcode自定义代码块以及迁移

  • 准备:回顾c

    宏定义 关键字 define 定义一个常量的方法(即宏定义) 带参数的宏定义 宏函数的定义 使用宏函数的好处是,不...

  • iOS开发 宏定义

    在iOS开发中,合理的使用宏定义可以使我们少些好多代码 C预定义宏DATE //进行预处理的日期(“Mmm dd...

  • iOS 常用宏定义

    iOS 开发中使用一些常用宏定义可以大大提高开发效率,提高代码的重用性.以下是一些常用的宏定义: 像这些宏定义,在...

网友评论

    本文标题:iOS使用宏定义函数和代码块

    本文链接:https://www.haomeiwen.com/subject/ykltfltx.html