iOS進階面試題----Block部分

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

 iOS進階面試題----Block部分 

 


1 什麼是block

對於閉包(block),閉包就是能夠讀取其它函數內部變數的函數。 比如接到電話,百度查詢後,返回網頁內容給A,這就是一個Block,在M交待工作時,已經定義好,並且取得了F1的任務號(局部變數),卻是在當A遇到問題時,才調用執行,跨函數在專案經理M查詢百度,獲得結果後回調該block。 2 block 實現原理Objective-C是對C語言的擴充,block的實現是基於指標和函數指標。從計算語言的發展,最早的goto,進階語言的指標,到物件導向語言的block,從機器的思維,一步步接近人的思維,以方便開發人員更為高效、直接的描述出現實的邏輯(需求)。下面是兩篇很好的介紹block實現的博文 3 block的使用使用執行個體cocoaTouch架構下動畫效果的Block的調用 使用typed聲明blocktypedef void(^didFinishBlock) (NSObject *ob);這就聲明了一個didFinishBlock類型的block,然後便可用@property (nonatomic,copy) didFinishBlock  finishBlock;聲明一個blokc對象,注意對象屬性設定為copy,接到block 參數時,便會自動複製一份。 __block是一種特殊類型,使用該關鍵字聲明的局部變數,可以被block所改變,並且其在原函數中的值會被改變。  4 常見系列面試題面試時,面試官會先問一些,是否瞭解block,是否使用過block,這些問題相當於開場白,往往是下面一系列問題的開始,所以一定要如實根據自己的情況回答。1 使用block和使用delegate完成委託模式有什麼優點?首先要瞭解什麼是委託模式,委託模式在iOS中大量應用,其在設計模式中是適配器模式中的對象適配器,Objective-C中使用id類型指向一切對象,使委託模式更為簡潔。瞭解委託模式的細節: iOS設計模式----委託模式 使用block實現委託模式,其優點是回調的block代碼塊定義在委派物件函數內部,使代碼更為緊湊;適配對象不再需要實現具體某個protocol,代碼更為簡潔。  2 多線程與blockGCD與Block使用 dispatch_async 系列方法,可以以指定的方式執行blockGCD編程執行個體 dispatch_async的完整定義   void dispatch_async(   dispatch_queue_t queue,   dispatch_block_t block);功能:在指定的隊列裡提交一個非同步執行的block,不阻塞當前線程 通過queue來控制block執行的線程。主線程執行前文定義的 finishBlock對象dispatch_async(dispatch_get_main_queue(),^(void){finishBlock();}); 

 

iOS進階面試題----Block部分

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.