2

私はいくつかのObj-Cコードを持っており、その中には多くのブロックをメンバーとして持つクラスがあります。問題のプロパティは次のとおりです。

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

@synthesizeそして、ファイル内のステートメントに実装され.mます。initクラスのメソッドの1つで、プロパティをリテラルブロックに設定しようとしました。

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

これは、コンパイラエラーを示します。コンパイラーは、andがandYESとしてNO定義(BOOL)1され、として定義されているにもかかわらず、戻りブロックを戻り変数に割り当てようとしていると主張します。Obj-Cに、sではなくsを返していることを認識させるにはどうすればよいですか?(BOOL)0BOOLsigned charintBOOLBOOLint

4

1 に答える 1

4

どうやら、型推論はあなたを失敗させています。より詳細な構文を試してください。

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