1

我正在尝试创建一个采用 CGFloat 参数并返回 CGFloat 的块变量。

CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
   return myFloat * 444563.4004;
};

这个定义有什么问题?为什么我会收到此警告?

4

2 回答 2

5

另一种可能的解决方案是使用具有显式返回类型的块:

CGFloat (^debt)(CGFloat) = ^CGFloat (CGFloat myFloat) {
    return myFloat * 444563.4004;
};

以避免编译器尝试从 return 语句中“猜测”返回类型。

比较“块编程主题”中的创建块:

如果你没有显式声明一个块表达式的返回值,它可以从块的内容中自动推断出来。

于 2013-03-24T12:45:26.137 回答
4

在 iOS(和其他 32 位平台)上,CGFloatfloat.

您的文字 ( 444563.4004) 是 a double,它提升myFloat为 adouble并创建块的返回类型double(而不是float您在声明时所说的返回类型debt)。要么将文字更改为 a float(附加f到它的末尾),要么将其转换为CGFloat.

于 2013-03-24T02:32:17.203 回答