代码之家  ›  专栏  ›  技术社区  ›  iand675

是否可以将块定义为类的成员?

  •  7
  • iand675  · 技术社区  · 14 年前

    我试图在Objective-C中实现一个非常简单的策略类,它允许内联定义策略,而不是通过继承定义策略。当前我的代码如下所示:

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

    “(”标记前应有说明符限定符列表

    有什么办法让这工作吗?

    2 回复  |  直到 13 年前
        1
  •  17
  •   Jacob Relkin    14 年前

    你应该把括号放在四周 NSArray * 在你的ivar定义中:

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

    typedef 为了更加清晰:

    typedef NSArray * (^Strategy)(void);
    
    @interface SSTaskStrategy : NSObject {
       Strategy block;
    }
    
    @end
    

    这允许您使用名称引用此块 Strategy

        2
  •  2
  •   kennytm    14 年前
    @interface SSTaskStrategy : NSObject {
        NSArray* (^strategy)(void);
    }
    

    你不需要把 ( ) 围绕返回类型。

    推荐文章