2

我有一些 Obj-C 代码,其中我有一个包含许多块作为成员的类。有问题的财产如下:

@property(nonatomic, readonly, retain) BOOL(^truthPredicate)(int, NSMutableDictionary*);

并在文件中的一个@synthesize语句中实现。.minit该类的一种方法中,我尝试将属性设置为文字块:

truthPredicate=^(int val, NSMutableDictionary* params) {return val >= MANodeTruthThreshold ? YES : NO;};

这表示编译器错误。编译器,尽管YESandNO被定义为(BOOL)1and (BOOL)0,并且BOOL被定义为signed char,编译器坚持认为我正在尝试将int返回块分配给BOOL返回变量。如何让 Obj-C 意识到我返回的是BOOLs,而不是ints?

4

1 回答 1

4

显然,类型推断让你失望了。尝试更详细的语法:

truthPredicate=^ BOOL (int val, NSMutableDictionary* params) {return val >= MANodeTruthThreshold ? YES : NO;};
于 2012-05-25T00:23:27.370 回答