C的回調函數:
callBack.h
1)、聲明一個DosomeThingCount函數,參數為一個(無前往值,1個int參數的)函數。
void DSTCount(void(*CallBack)(int data_i32));
callBack.c
1)、在DosomeThingCount函數,對運轉次數自增,並調用參數--函數。
void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*CallBack)(numb); }
main.c
1)、定義一個customDosomeThingCount函數,打印數據。
void customDSTCount(int data_i32) { printf("%d\n",data_i32); }
2)、main函數裡,運轉 callBack.h 的 DSTCount 函數,參數為main裡的customDSTCount函數。
while (1) { DSTCount(customDSTCount); }
OC的Block:
MyButton.h(承繼於UIButton):
1)、定義一個Block的參數數量、類型。
typedef void(^ButtonBlock)(int data_i32);
2)、聲明一個doSomeThingCount函數,帶Block參數。(留意,這裡不需求加*,類用習氣了,參數隨手就加個*)
-(void)DSTCount:(ButtonBlock)myButtonBlockPTR;
MyButton.m(承繼於UIButton):
1)、在doSomeThingCount函數,對運轉次數自增,並調用Block參數。
-(void)DSTCount:(ButtonBlock)myButtonBlockPTR { static int numb = 0; numb++; myButtonBlockPTR(numb); }
RootViewControl.m(self.Window.rootViewController):
1)、viewDidLoad函數,定義一個(100,100,100,100)、白色的按鈕實例,按鈕添加事情,把按鈕加到self.view上。
MyButton *tempButton = [[MyButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; tempButton.backgroundColor = [UIColor redColor]; [tempButton addTarget:self action:@selector(mybuttonClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:tempButton];
2)、按鈕點擊調用,調用MyButton裡的DSTCount函數,Block參數直接輸出。
-(void)mybuttonClick:(MyButton*)button { [button DSTCount:^(int data_i32) { printf("%d\n",data_i32); }]; }
圖片補充:
C回調函數:
1)、CallBack.C
2)、CallBack.h
3)、main.c
OC的Block
1)、MyButton.h
2)、MyButton.m
3)、RootViewControl.m
4)、運轉
【嵌入式&iOS:回調函數(C)與block(OC)傳 參/函數 比照】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!