Block(MJ筆記)

Block是iOS中一種比較特殊的數(shù)據(jù)類型焊傅。

Block是蘋果官方特別推薦使用的數(shù)據(jù)類型揩页,應(yīng)用場(chǎng)景比較廣泛:

·動(dòng)畫

·多線程

·集合遍歷

·網(wǎng)絡(luò)請(qǐng)求回調(diào)

Block作用:

·用來保存一段代碼肋拔,可以在恰當(dāng)?shù)臅r(shí)間再取出來調(diào)用

·功能有點(diǎn)類似于函數(shù)和方法

1.定義簡(jiǎn)單的block變量

類似于函數(shù)和方法的定義:參數(shù)思喊、返回值

(1)無參數(shù)無返回值

void (^Block名稱)()=^{......};

如:void (^logStar)()=^{NSLog(@"****"););

(2)有參數(shù)無返回值

void (^Block名稱)(參數(shù)類型1言沐,參數(shù)類型2...)=^(參數(shù)類型1 參數(shù)1邦投,參數(shù)類型2 參數(shù)2...){...};

如:void (^logStar2)(int)=^(int numberOfLine){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?for(int i=0;i<numberOfLine;i++)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NSLog(@"***");}//打印numberOfLine行***

(3)有參數(shù)也有返回值

返回值數(shù)據(jù)類型 (^Block名稱)(參數(shù)類型1伤锚,參數(shù)類型2...)=^(參數(shù)類型1 參數(shù)1,參數(shù)類型2 參數(shù)2...){....return 返回值}志衣;

如:int (^minusBlock)(int,int)=^(int x,int y){return x-y;};

2.block與typedef

typedef一般用法:typedef 數(shù)據(jù)類型 數(shù)據(jù)類型別名屯援;

在block中:typedef 返回值類型 (^block名稱)(參數(shù)1數(shù)據(jù)類型,參數(shù)2數(shù)據(jù)類型...);

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

//定義一個(gè)叫做MyBlock的數(shù)據(jù)類型念脯,它存儲(chǔ)的代碼必須返回int狞洋,必須接收兩個(gè)int類型的參數(shù)

//利用MyBlock類型可以定義block變量

用法如:MyBlock minusBlock=^(int x,int y){ return x-y;};

注意:

(1)調(diào)用block之前一定要做判斷才嚴(yán)謹(jǐn)

如:void goToWork(void(^work)())={if(work!=nil) work();}

調(diào)用goToWork()時(shí)不會(huì)報(bào)錯(cuò),因?yàn)橐呀?jīng)做了work是否為空的判斷和二,若沒有if(work!=nil)的判斷徘铝,直接調(diào)用goToWork()時(shí)由于傳的參數(shù)為空,程序會(huì)報(bào)錯(cuò)!

(2)默認(rèn)情況下惕它,block能調(diào)用但不能修改外面的局部變量

但在局部變量前加上修飾__block怕午,則能在block中修改變量值

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市淹魄,隨后出現(xiàn)的幾起案子郁惜,更是在濱河造成了極大的恐慌,老刑警劉巖甲锡,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兆蕉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缤沦,警方通過查閱死者的電腦和手機(jī)虎韵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缸废,“玉大人包蓝,你說我怎么就攤上這事∑罅浚” “怎么了测萎?”我有些...
    開封第一講書人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)届巩。 經(jīng)常有香客問我硅瞧,道長(zhǎng),這世上最難降的妖魔是什么恕汇? 我笑而不...
    開封第一講書人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任腕唧,我火速辦了婚禮,結(jié)果婚禮上瘾英,老公的妹妹穿的比我還像新娘四苇。我一直安慰自己,他們只是感情好方咆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蟀架,像睡著了一般瓣赂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上片拍,一...
    開封第一講書人閱讀 50,043評(píng)論 1 291
  • 那天煌集,我揣著相機(jī)與錄音,去河邊找鬼捌省。 笑死苫纤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卷拘,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼喊废,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了栗弟?” 一聲冷哼從身側(cè)響起污筷,我...
    開封第一講書人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乍赫,沒想到半個(gè)月后瓣蛀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雷厂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年惋增,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片改鲫。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诈皿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钩杰,到底是詐尸還是另有隱情纫塌,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布讲弄,位于F島的核電站措左,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏避除。R本人自食惡果不足惜怎披,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓶摆。 院中可真熱鬧凉逛,春花似錦、人聲如沸群井。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽书斜。三九已至诬辈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荐吉,已是汗流浹背焙糟。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留样屠,地道東北人穿撮。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓缺脉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親悦穿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子攻礼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Block使用場(chǎng)景,可以在兩個(gè)界面的傳值咧党,也可以對(duì)代碼封裝作為參數(shù)的傳遞等秘蛔。用過GCD就知道Block的精妙之處。...
    Coder_JMicheal閱讀 721評(píng)論 2 1
  • iOS代碼塊Block 概述 代碼塊Block是蘋果在iOS4開始引入的對(duì)C語言的擴(kuò)展,用來實(shí)現(xiàn)匿名函數(shù)的特性,B...
    smile刺客閱讀 2,338評(píng)論 2 26
  • 前言 Blocks是C語言的擴(kuò)充功能傍衡,而Apple 在OS X Snow Leopard 和 iOS 4中引入了這...
    小人不才閱讀 3,759評(píng)論 0 23
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理深员,服務(wù)發(fā)現(xiàn),斷路器蛙埂,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 連續(xù)寫了兩天比較專業(yè)倦畅,有一定深度的話題,今天我們來聊一些輕松的绣的。小編記憶中那些能讓你笑破肚皮的喜劇片叠赐。 《反斗神鷹...
    朱誠逸閱讀 441評(píng)論 0 1