如何解决如何为 Objective-C++ 中的方法编写宏包装器
__typeof(self) __weak weakSelf = self;
dispatch_async(_queue,^{
auto strongSelf = weakSelf;
if (!strongSelf) {
return;
}
[strongSelf doSomething:aParam paramB:paramB];
});
#define RUN_SAFELY_ON_QUEUE(q_,METHOD) \
__typeof(self) __weak weakSelf = self; \
dispatch_async(q_,^{ \
auto strongSelf = weakSelf; \
if (!strongSelf) { \
return; \
} \
METHOD() \
}); \
然后运行如下:
RUN_SAFELY_ON_QUEUE(_queue,[self doSomething:aParam paramB:paramB]);
目前,我收到错误:"Called object type 'void' is not a function or function pointer"
。
我正在寻找的可能吗?
感谢您的帮助!
解决方法
这有效,并确保在参数周围添加 ():
#define RUN_SAFELY(q_,METHOD) \
__weak __typeof(self) weakSelf = self; \
dispatch_async((q_),^{ \
auto strongSelf = weakSelf; \
if (!strongSelf) { \
return; \
} \
(METHOD); \
}); \
并像这样使用它:
RUN_SAFELY(dispatch_get_main_queue(),[self doSomething:aParam paramB:paramB]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。