我正在尝试在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来引用此块,而不必每次都希望使用时髦的语法来引用它。

10-01 16:19