![](/img/trans.png)
[英]iOS warning message : Incompatible pointer types passing 'CGFloat *' (aka 'double *') to parameter of type 'float *'
[英]Incompatible block pointer types initializing 'CGFloat (^__strong)(CGFloat)' with an expression of type 'double (^)(CGFloat)'
我正在尝试创建一个带有CGFloat参数并返回CGFloat的块变量。
CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
return myFloat * 444563.4004;
};
这个定义有什么问题? 为什么会收到此警告?
在iOS(和其他32位平台)上, CGFloat
是float
的别名。
您的文字( 444563.4004
)是double
,这将myFloat
提升为double
,并使代码块的返回类型为double
(而不是声明debt
时所说的float
)。 将字面量更改为float
(将f
附加到其末尾),或将其CGFloat
为CGFloat
。
另一种可能的解决方案是使用具有显式返回类型的块:
CGFloat (^debt)(CGFloat) = ^CGFloat (CGFloat myFloat) {
return myFloat * 444563.4004;
};
为了避免编译器试图从返回语句中“猜测”返回类型。
在“块编程主题”中比较创建块:
如果没有显式声明块表达式的返回值,则可以从块的内容中自动推断出它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.