您的位置:首页 > 其它

CocoaPods 里的 objc_msgSend

2015-06-12 09:59 239 查看
编译一个用到 QuickDialog 的项目,报 "Too Many arguments to function call, expected 0, have 3" 错。

根据 "https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html", 倒是简单,只要强制转换成合适的函数原型就可以用了:

int (*action)(id, SEL, int) = (int (*)(id, SEL, int)) objc_msgSend;

不过呢,调用代码是在 pod 项目里,已经锁定不可修改,即使打开锁定,下回刷新pod一下,修改会被冲掉的。

看一眼 objc/message.h ,这是个保护措施,真正的函数原型在 OBJC_OLD_DISPATCH_PROTOTYPES 宏底下。然后就发现了这:



在 pod 项目的 QuickDialog 目标上关掉 "Enable Strict Checking of objc_msgSend Calls" ,搞定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: