2010-11-10 65 views
7

我試圖在Objective-C中實現一個非常簡單的策略類,它允許將策略定義爲內聯而不是通過繼承進行定義。目前我的代碼看起來是這樣的:是否可以將塊定義爲類的成員?

@interface SSTaskStrategy : NSObject { 
    (NSArray *)(^strategy)(void); 
} 

@end 

我想這會工作,但我得到的錯誤

之前預計符限定符列表「(」令牌

任何想法如何使這項工作?

回答

17

你應該串門NSArray *括號中的伊娃定義:

@interface SSTaskStrategy : NSObject { 
    NSArray * (^strategy)(void); 
} 

@end 

另外,我強烈建議您使用typedef更加清晰:

typedef NSArray * (^Strategy)(void); 

@interface SSTaskStrategy : NSObject { 
    Strategy block; 
} 

@end 

這可以讓你引用此與名稱Strategy塊,而不是每次你想引用它不得不使用時髦的語法。

+1

對於typedef爲+1。 – BoltClock 2010-11-10 19:35:35

+0

@BoltClock謝謝! – 2010-11-10 19:47:51

2
@interface SSTaskStrategy : NSObject { 
    NSArray* (^strategy)(void); 
} 

你不需要把()圍繞返回類型。

相關問題