我正在尝试创建一个采用 CGFloat 参数并返回 CGFloat 的块变量。
CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
return myFloat * 444563.4004;
};
这个定义有什么问题?为什么我会收到此警告?
我正在尝试创建一个采用 CGFloat 参数并返回 CGFloat 的块变量。
CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
return myFloat * 444563.4004;
};
这个定义有什么问题?为什么我会收到此警告?
另一种可能的解决方案是使用具有显式返回类型的块:
CGFloat (^debt)(CGFloat) = ^CGFloat (CGFloat myFloat) {
return myFloat * 444563.4004;
};
以避免编译器尝试从 return 语句中“猜测”返回类型。
比较“块编程主题”中的创建块:
如果你没有显式声明一个块表达式的返回值,它可以从块的内容中自动推断出来。
在 iOS(和其他 32 位平台)上,CGFloat
是float
.
您的文字 ( 444563.4004
) 是 a double
,它提升myFloat
为 adouble
并创建块的返回类型double
(而不是float
您在声明时所说的返回类型debt
)。要么将文字更改为 a float
(附加f
到它的末尾),要么将其转换为CGFloat
.