gpt4 book ai didi

objective-c - 在 Objective-C block 中遇到 BOOL 返回类型问题

转载 作者:太空狗 更新时间:2023-10-30 03:12:20 24 4
gpt4 key购买 nike

我偶然发现了 block 中 BOOL 返回类型的一个奇怪问题。具有以下定义:

typedef BOOL (^BoolBlock)(void);

...此代码通过:

BoolBlock foo = ^{ return YES; };

...但是编译失败:

BoolBlock bar = ^{ return YES || NO; };

错误信息如下:

Incompatible block pointer types initializing 'BoolBlock' (aka 'BOOL (^)(void)') with an expression of type 'int (^)(void)'

我可以使用显式强制转换来解决这个问题,但是没有它就不能工作吗?有更好的解决方案吗?

最佳答案

||正如 Chuck 所说,运算符返回 int 类型。

BoolBlock bar = ^{ return (BOOL)(YES || NO); };

BoolBlock bar = ^BOOL (void){ return YES || NO; };
BoolBlock bar = ^BOOL (){ return YES || NO; }; // warns in gcc, ok with clang

关于objective-c - 在 Objective-C block 中遇到 BOOL 返回类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com