原文:https://mikeash.com/pyblog/objc_msgsends-new-prototype.html总结:objc_msgSend类型申明改变的原因:让错误在编译的时候发生,而不是等到运行时。为什么有运行时错误:ABI的错配,调用方的ABI(对参数的传递)和接收方ABI(对参数的处理)错配了为什么错配:我传的是float,你把我当double了,浮点转成双精度浮点,这可不是和short转int单单高位补几个0就可以了为什么float转double了:C语言经常搞这种骚操作,毕竟处理数据的时候,用更高的精度有好处。怎么阻止float转double:可以把函数中的参数类型申
原文:https://mikeash.com/pyblog/objc_msgsends-new-prototype.html总结:objc_msgSend类型申明改变的原因:让错误在编译的时候发生,而不是等到运行时。为什么有运行时错误:ABI的错配,调用方的ABI(对参数的传递)和接收方ABI(对参数的处理)错配了为什么错配:我传的是float,你把我当double了,浮点转成双精度浮点,这可不是和short转int单单高位补几个0就可以了为什么float转double了:C语言经常搞这种骚操作,毕竟处理数据的时候,用更高的精度有好处。怎么阻止float转double:可以把函数中的参数类型申
WhatdoesOBJC_EXPORTkeywordinObjective-Cmean?当我使用这个方法class_getName()时,我发现它是这样声明的:1**OBJC_EXPORT**constchar*class_getName(Classcls)OBJC_EXPORT是什么意思?如果你CMD点击符号,你会看到它不是关键字。OBJC_EXPORT定义为:1#defineOBJC_EXPORT OBJC_EXTERNOBJC_VISIBLE而OBJC_EXTERN是extern"C"或extern,这取决于你是分别编译C还是C。而OBJC_VISIBLE在Windows上是__decl
WhatdoesOBJC_EXPORTkeywordinObjective-Cmean?当我使用这个方法class_getName()时,我发现它是这样声明的:1**OBJC_EXPORT**constchar*class_getName(Classcls)OBJC_EXPORT是什么意思?如果你CMD点击符号,你会看到它不是关键字。OBJC_EXPORT定义为:1#defineOBJC_EXPORT OBJC_EXTERNOBJC_VISIBLE而OBJC_EXTERN是extern"C"或extern,这取决于你是分别编译C还是C。而OBJC_VISIBLE在Windows上是__decl