我有以下区块代码
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) ;
};
为什么会这样?
答案 0 :(得分:1)
因为BOOL是目标C类型,逻辑比较运算符是标准C.在标准C中,比较运算符的返回类型是int。有时候知道这很重要,因为当你否定一个你认为是布尔值但实际上是一个int的值时,它不一定是你所期望的。
在您的示例中,转换为BOOL很好。