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)傳 參/函數 比照】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!