我正在尝试在Objective-C中实现一个非常简单的策略类,它允许在内联定义策略而不是通过继承定义策略。目前我的代码如下所示:
@interface SSTaskStrategy : NSObject {
(NSArray *)(^strategy)(void);
}
@end
我认为这会有效,但我收到了错误
'('token
之前的预期说明符限定符列表
任何想法如何使这项工作?
答案 0 :(得分:17)
您应该将NSArray *
的括号放在ivar定义中:
@interface SSTaskStrategy : NSObject {
NSArray * (^strategy)(void);
}
@end
此外,我强烈建议您使用typedef
以获得更清晰:
typedef NSArray * (^Strategy)(void);
@interface SSTaskStrategy : NSObject {
Strategy block;
}
@end
这允许您使用名称Strategy
引用此块,而不是每次要引用它时都必须使用时髦的语法。
答案 1 :(得分:2)
@interface SSTaskStrategy : NSObject {
NSArray* (^strategy)(void);
}
您无需在返回类型周围添加(
)
。