block,blockb

來源:互聯網
上載者:User

block,blockb

//1 聲明block

//2 實現block

//3 調用block

//聲明函數指標

//void (*ptest1) (void)

//聲明block,要指向匿名函數

void (^block1)(void);

int (^block2)(int a,int b);

int (^block3)(int a,int b);

typedef void (^block4)(void);

typedef int (^block5)(int a,int b);

 

//block的實現

//block1指向匿名函數,匿名函數結尾要有分號,如果block參數類型為void,那麼指向的匿名函數的參數可以省略不寫,其他的不可以省略

//block指向匿名函數的傳回值可以省略(所有類型的傳回值都可以省略)

block1=^

{
printf("block1\n");

};

//匿名函數的作用為求a+b的和

block2=^(int a,int b)

{

return a+b;

};

block3=^(int a,int b)

{
return a-b;

};

//bl4的作用為block4

block4 bl4;

bl4=^

{
NSLog(@"block4");

};

block5 bl5;

bl5=^(int a,int b)

{
return a/b;

 

};

//block的調用

block1();

int sum=block2(2,5);

printf("%i\n",sum);

int mut=block3(5,3);

printf("%i\n",mut);

bl4();

NSLog(@"%i",bl5(8,2));

#################################################

void test1(void)

{

    printf("test1\n");

}

void test2(void)

{

    printf("test2\n");

}

int test3(int a,int b)

{

    return a+b;

}

int test4(int a,int b)

{

    return a-b;

}

 

(1)//通過函數名調用C函數

test1();

(2)//聲明函數指標,函數指標指向test1函數

//函數指標可以指向函數

void (*ptest1)(void);

ptest1=test1;

//通過指標調用函數

ptest1();

void (*ptest2)(void);

ptest2=test2;

ptest2();

//通過函數名調用

int result=test3(2,5);

printf("%d",result);

//通過函數指標調用

int (*ptest3)(int a,int b);

ptest3=test3;

int result=ptest3(2,5);

printf("%d",result);

int (*ptest4)(int a,int b);

ptest4=test4;

int sum=ptest4(5,2);

printf("%d",sum);

//typedef自訂類型

typedef int MYINT;

MYINT i=10;

printf("%d",i);

 

typedef void (*tdftest1)(void);

tdftest1 t1=test1;

//t1=test1;

t1();

typedef int (*tdfTest3)(int a,int b);

tdfTest3 t3=test3;

int a=t3(5,2);

printf("%d",a);

//實戰練習

在block中調用某些控制項會有警告,可以通過下面的方法解除警告

__block UILabel *label=self.label;

_secondController.bl=^(float size)

{
label.font=[UIFont systemFontOfSize:size];

};

 

#import <UIKit/UIKit.h>

 

//聲明block

typedef void(^block)(float size);

 

 

 

@interface SecondViewController : UIViewController

- (IBAction)pressSteper:(id)sender;

 

//給block封裝屬性時,需要用strong修飾

//如果封裝block的屬性時,那麼聲明的block 需要用typedef修飾

@property(strong,nonatomic)block bl;

 

 

 

 

@end

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.