Objective c 什么是;long long(^blockFun)(=(long long(^)()moreBlockFun";你的意思是什么?
我正在努力有效地学习和使用积木 在网络上,我遇到了以下代码:Objective c 什么是;long long(^blockFun)(=(long long(^)()moreBlockFun";你的意思是什么?,objective-c,Objective C,我正在努力有效地学习和使用积木 在网络上,我遇到了以下代码: long long (^blockFun)() = (long long (^)())moreBlockFun; 我认为它试图创建一个块,该块期望返回一个long,我认为它也在某处执行一些强制转换。这是一个块类型强制转换,是的,语法不太好。我们假设moreBlockFun是一个不带参数的块,并返回一些对long-long进行合理转换的内容-这种类型的签名被写入long-long(^)()。因此,我们为该块创建一个名为blockFun
long long (^blockFun)() = (long long (^)())moreBlockFun;
我认为它试图创建一个块,该块期望返回一个long,我认为它也在某处执行一些强制转换。这是一个块类型强制转换,是的,语法不太好。我们假设
moreBlockFun
是一个不带参数的块,并返回一些对long-long进行合理转换的内容-这种类型的签名被写入long-long(^)(
)。因此,我们为该块创建一个名为blockFun
的新本地名称,语法为long(^blockFun)(
),并执行强制转换
这是一个很大程度上继承自函数指针类型表示法的混乱局面,实际上每个C程序员在记住它之前必须查找大约482次。你并不孤单 这是块类型转换,是的,语法不太好。我们假设
moreBlockFun
是一个不带参数的块,并返回一些对long-long进行合理转换的内容-这种类型的签名被写入long-long(^)(
)。因此,我们为该块创建一个名为blockFun
的新本地名称,语法为long(^blockFun)(
),并执行强制转换
这是一个很大程度上继承自函数指针类型表示法的混乱局面,实际上每个C程序员在记住它之前必须查找大约482次。你并不孤单 啊。。。令人惊叹的现在有道理了。你可以(也应该)引入
typedef
s,这样你就可以写“FooBlock”或类似的东西,省去在所有点上使用完整签名的主要麻烦。(1)使用typedef。它为疯狂的指针语法增添了理智。(2) 在创建块语法时,我意识到它使理解函数指针变得更容易。基本上,使用任何块声明,用*替换^啊。。。令人惊叹的现在有道理了。你可以(也应该)引入typedef
s,这样你就可以写“FooBlock”或类似的东西,省去在所有点上使用完整签名的主要麻烦。(1)使用typedef。它为疯狂的指针语法增添了理智。(2) 在创建块语法时,我意识到它使理解函数指针变得更容易。基本上,使用任何块声明,用*替换^