【发布时间】:2019-09-14 10:02:54
【问题描述】:
假设我在运行时得到一个对象和它的一个选择器,我打算安全地调用它,所以我定义了
#define objc_msgsend_va ((void (*)(id, SEL, ...))objc_msgsend)
#define Call_object(obj, sel, ...) objc_msgsend_va(obj, sel, ## __VA_ARGS__)
我能否用 Call_object 宏安全地替换任何方法调用,否则可能会导致某种崩溃。
这是为了定义一个宏来在 iOS 设备上运行任意运行时方法,我无法为每个方法显式转换为正确的函数类型,所以我使用了可变长度参数。
主要考虑的是这样使用宏的安全性。
【问题讨论】:
标签: c objective-c objective-c-runtime