blockでコールバックを書いたった
blockでコールバックを書く
いい加減、delegateばっかだと、あっちこっち読むのが大変なので書いてみた
まず、呼び出される側から。
// BlockSample.h #import <Foundation/Foundation.h> typedef void (^BlockSampleCallBack)(NSArray *foo); @interface BlockSample : NSObject - (void)hoge:(NSString *)fuga callback:(BlockSampleCallBack)callback; @end
typedefで定義してするほうが可読にいいよねってことらしい。
// BlockSample.m #import "BlockSample.h" @implementation BlockSample - (void)hoge:(NSString *)fuga callback:(BlockSampleCallBack)callback { NSArray *array = @[@"りんご", @"ごりら", @"らぶらぶ"]; callback(array) } @end
次に呼び出し側を書く。
// CalledBlockSample.m // いろいろと割愛 - (void)moDMP { // BlockSampleがシングルトンだったとして... [[BlockSample] sharedManager] hoge:@"これはテストだ" callback:^(NSArray *foo) { NSLog(@"アホな配列がやってくるお %@", foo); }]; } // いろいろと割愛