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

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

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

  • 使用宏定义函数实现
//定义
#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);
  • 使用宏定义代码块实现
//定义
#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)\
^(){\
    return a+b;\
}()

//使用
double sum = getSum(M_PI,M_E);
  • 写在最后,当时写的时候,想到了使用宏定义的方式,但是在网上找了一圈没有找到怎么使用宏来定义代码块和函数,于是自己通过尝试实现了,所以在这里Mark一下,希望能够帮到遇到同样问题的人,也为了以后自己忘了能够查到。
posted @   brave-sailor  阅读(1607)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2015-08-22 Android View绘制过程
2015-08-22 View实现涂鸦、撤销以及重做功能
2015-08-22 SurfaceView类透明背景设置
2015-08-22 Android SurfaceView实现静态于动态画图效果
2015-08-22 Android自定义控件实战——水流波动效果的实现WaveView
2015-08-22 Android中贝塞尔曲线的绘制方法
2013-08-22 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(五)
点击右上角即可分享
微信分享提示