使用“double (^)(CGFloat)”类型的表达式初始化“CGFloat (^__strong)(CGFloat)”时不兼容的块指针类型

zak*_*ces 1 objective-c cgfloat ios objective-c-blocks

我正在尝试创建一个块变量,它接受 CGFloat 参数并返回 CGFloat。

CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
   return myFloat * 444563.4004;
};
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*n R 5

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

\n\n
CGFloat (^debt)(CGFloat) = ^CGFloat (CGFloat myFloat) {\n    return myFloat * 444563.4004;\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n
\n

如果您没有显式声明块表达式的返回值,则可以自动从块的内容推断出返回值。

\n
\n