2
我有以下的塊代碼編譯錯誤與返回類型
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) ;
};
爲什麼出現這種情況?
嗯,即使當我嘗試做「[input length] == 10?YES:NO」。這應該消除你所聲稱的問題,但它仍然無法工作。 – ugiflezet
我懷疑這可能與BOOL不是真正的一流類型有關,它們是用typedef標記字符,檢查objc.h.解決錯誤的另一種方法是顯式鍵入要分配的塊,並避免使用類型推理器。 'FieldValidationBlock aBlock = BOOL ^(NSString * input){...}' – ikuramedia
對不起,這意味着'FieldValidationBlock aBlock =^BOOL(NSString * input){...}' – ikuramedia