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