gpt4 book ai didi

iphone - 具有返回类型的 block 的编译错误

转载 作者:行者123 更新时间:2023-12-03 21:17:50 26 4
gpt4 key购买 nike

我有以下 block 代码

    typedef BOOL(^FieldValidationBlock)(NSString *);
FieldValidationBlock aBlock = ^(NSString *input){
return ([input length] == 10) ;
};

这引发了一个编译错误,表明返回类型是 int 并且应该是 BOOL。当我添加类型转换时,它工作得很好:

    typedef BOOL(^FieldValidationBlock)(NSString *);
FieldValidationBlock aBlock = ^(NSString *input){
return (BOOL)([input length] == 10) ;
};

为什么会发生这种情况?

最佳答案

因为BOOL是一个客观的C类型,而逻辑比较运算符是标准C。在标准C中,比较运算符的返回类型是int。有时了解这一点很重要,因为当您否定一个您认为是 bool 值但实际上是一个整数的值时,它不一定是您所期望的。

在您的示例中,转换为 BOOL 就可以了。

关于iphone - 具有返回类型的 block 的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924336/

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