block 就是一個代碼塊,上代碼:
TestBlock類中 就是定義block 給 block 傳入參數 ,“方法”體里 留到回調的地方 實現
#import <Foundation/Foundation.h> typedef void (^BlockCallBack)(NSString *SayWhat); @interface TestBlock : NSObject { BlockCallBack bcb; } @property(nonatomic,assign)BlockCallBack bcb; -(void)initBcb:(id)entity:(BlockCallBack)bcb1; @end
#import "TestBlock.h" #import <objc/runtime.h> @implementation TestBlock @synthesize bcb; -(void)initBcb:(id)entity :(BlockCallBack)bcb1 { const char *name= object_getClassName(entity); self.bcb=bcb1; if (bcb) { bcb([[NSString alloc] initWithUTF8String:name]); }else { NSLog(@"參數 bcb1 未實現..."); } } -(void)dealloc { [super dealloc]; } @end
再joce 類中 (一人名 簡單事例 不太規范)
回調 block 得到參數 實現 “方法”體
#import <Foundation/Foundation.h> #import "TestBlock.h" @interface Joce : NSObject { TestBlock *tb; } @property(nonatomic,retain)TestBlock *tb; -(void)sayHello; @end
#import "Joce.h" @implementation Joce @synthesize tb; -(void)sayHello { if (tb) { [tb initBcb:self :^(NSString *name){ NSLog(@"%@ Say Hello Word!!!!!!",name); }]; }else { NSLog(@"請實例化 joce"); } } -(void)dealloc { [tb release]; [super dealloc]; } @end
ok....
希望下次能再 項目中用到....
