我正在尝试在Objective-C中实现一个非常简单的策略类,该策略类允许内联定义策略,而不是通过继承进行定义。目前,我的代码如下所示:
@interface SSTaskStrategy : NSObject {
(NSArray *)(^strategy)(void);
}
@end
我以为这可以用,但我遇到了错误
任何想法如何使这项工作?
最佳答案
您应该在ivar定义中的NSArray *
周围加上括号:
@interface SSTaskStrategy : NSObject {
NSArray * (^strategy)(void);
}
@end
另外,我强烈建议您使用
typedef
来提高清晰度:typedef NSArray * (^Strategy)(void);
@interface SSTaskStrategy : NSObject {
Strategy block;
}
@end
这使您可以使用名称
Strategy
来引用此块,而不必每次都希望使用时髦的语法来引用它。