block是啥意思啊,block的知識點

 2023-12-25 阅读 29 评论 0

摘要:// //??main.m //??1211塊練習 // //??Created?by?jerehedu?on?14/12/11. //??Copyright?(c)?2014年?jereh.?All?rights?reserved. // ? #import?<Foundation/Foundation.h> ? int?a=10; ? int?b=12; ? ? int?main(int?argc,?const?char?*?argv[]) { //????int

//

//??main.m

//??1211塊練習

//

//??Created?by?jerehedu?on?14/12/11.

//??Copyright?(c)?2014年?jereh.?All?rights?reserved.

//

?

#import?<Foundation/Foundation.h>

?

int?a=10;

?

int?b=12;

?

?

int?main(int?argc,?const?char?*?argv[])

{

//????int?__block?c=19;

?

????@autoreleasepool?{

????????

????????//block能夠訪問局部變量,可是不能改動

????????//__block?塊改動?keyword???不加的話無法在塊內對c(局部變量)進行改動

????????__block?int??c=19;

????????

????????void?(^nBlock)()=^{

????????????c+=9;

????????????NSLog(@"%i",c);

????????????

????????};

????????nBlock();

????????

????????//外部變量能夠直接操作、改動

????????void?(^nmBlock)()=^{

????????????

????????????NSLog(@"%i",++a);

????????????

????????};

????????nmBlock();

????????

????????

????????NSLog(@"%i,%i",a,b);

????????

????????//block保存一段代碼,用花括號括起來

????????//block標志是^

????????/*block與函數比較

?????????1.能夠保存代碼

?????????2.有返回值

?????????3.有形參

?????????4.調用方式和C調用函數一樣

?????????*/

????????

????????

????????//沒有參數返回值的塊

????????void?(^?myBlock)();

????????myBlock=^{

????????????NSLog(@"沒有參數返回值的塊。

");

????????

????????};

????????//直接寫完不會被運行,被保存起來了,須要調用

????????//塊的調用

????????myBlock();

????????

????????//寫在一起

????????void(^?myblock)()=^{

????????????NSLog(@"沒有參數返回值的塊。

");

????????};

????????myblock();

????

????????//能夠把塊寫在main的上面,則整個函數體內直接調用就可以

//==========================================================

????????//有參數返回值的?加法

????????int?(^?addBlock)(int,int)????????=??????^(int?a,int?b){

????????????return?a+b;??//此處括號內形參能夠省略

????????};

????????NSLog(@"有參數返回值的?加法??%i",addBlock(1,2))??;

????????

????????

????????//通過block,打印出N條直線。N是調用塊時傳入

????????void(^?lineBlock)(int)=^(int?N){

????????????for?(int?i=0;?i<N;?i++)?{

????????????????NSLog(@"______________");

????????????}

????????};

????????lineBlock(5);

????????

????????//減法

????????int?(^?subBlock)(int,int)=^(int?a,int?b){

????????????return?a-b;

????????};

????????NSLog(@"減法?%i",subBlock(23,12));

????????

????????

????????//typedef??用MyBlock取代int?(^?MyBlock)(int,int)

????????typedef?int?(^?MyBlock)(int,int);

????????

????????//乘法簡化?MyBlock是類型,不能直接用來調用block,須要用變量名來調用

????????

????????MyBlock?mulBlock=^(int?a,int?b){

????????????return?a*b;

????????};

????????

????????NSLog(@"乘積為:?%i",mulBlock(1,2));

????????

????????//除法

????????MyBlock?divBlock=^(int?a,int?b){

????????????return?a/b;

????????};

????????NSLog(@"商為:?%i",divBlock(9,3));

????????

????????

????????

????????

????????

????????

????????

????}

????

????return?0;

}

?

?

轉載于:https://www.cnblogs.com/cxchanpin/p/7288864.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/195009.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息