2011年5月20日金曜日

Objective-Cでメソッドチェーン

//  JQ.h

//    ブロック構文のプロパティを作る

//    ブロックは自身と同一なクラスを返すようにする

//    引数はなんでも良い


@property (nonatomic, retain) JQ* (^call)(const char *);


//  JQ.m

//    たとえば自分に変更を加えたり、新しく作ったりして返す


- (JQ *(^)(const char *))call

{

  JQ* (^method)(const char *) = (JQ *(^)(const char *))(^(const char *statement) {

    [self add:statement];

    return self;

  });

  

  return method;

}


- (void)somewhere

{

  self.call("test1").call("test2").call("test3").call("test4").call("test5");

}

0 件のコメント:

コメントを投稿