Objective-c學習筆記3

來源:互聯網
上載者:User

標籤:

objective-c代碼塊多並發

1.代碼塊對象是對C語言中函數的擴充,除了函數中的代碼,代碼塊還包含有變數綁定,代碼塊有時也被稱為閉包

 

2.代碼塊包含兩種綁定類型,自動綁定使用的是棧空間,託管綁定使用的是對空間

 

3.代碼塊不屬於ansi的c語言標準

 

4.代碼塊特徵如下 1.傳回型別可以手動聲明也可以編譯器自動推導,具有指定類型的參數列表 ,擁有名稱,代碼塊的執行個體如下

void (^代碼塊名稱)(參數類型 參數);

 

5.代碼塊的實現如下

void (^代碼塊名稱)(參數類型 參數) = ^代碼塊名稱

{

代碼塊實現

}

 

6.代碼塊只有在定義的時候才需要^符號,在使用的時候可以當成一般函數來使用

 

7.代碼塊可以訪問與他同時建立的有效變數

 

8.使用typedef關鍵字可以簡化代碼塊定義

typedef double (^代碼塊名)(參數列表)

然後就可以 代碼塊名 代碼塊執行個體 = ^(參數列表){實現}

 

9.代碼塊可以訪問函數用到的標準類型的變數,包括本地變數,全域變數,參數變數和_block變數,代碼塊內部的本地變數

 

10.本地變數被代碼塊擷取是作為常量被擷取的,也就是說不能修改值,要是想修改值的話,必須將他們聲明為可修改的_block

 

11.部分變數不能被聲明為block的,包括長度可變的數組,包含長度可變數組的結構體

 

12.蘋果引入了GCD技術實現系統層級的線程管理

 

[email protected]可以對代碼進行臨界區保護

 

14.如果定義了一個屬性沒有指定關鍵字nonatomic,編譯器自動產生的getset方法是互斥的,可以使用@nonatomic關鍵字指定互斥層級

 

15.想讓一段代碼在後台執行可以使用NSObject的performSelectorInBackground:withObject方法

 

16.在後台執行的方法不能帶傳回值,要麼只有一個參數,要麼沒有參數

 

17.oc的調度隊列分為三種,分別是連續隊列,並發隊列,主隊列,連續隊列按照fifo原則進行,並發隊列按照優先順序執行,但是一次啟動並執行任務量是不確定的,可以指定並發隊列的三個優先順序分別是high low default,如果想獲得優先順序,使用dispatch_get_global_queue方法,得到的結果分別是DISPATCH_QUEUE_PROORITY_HIGH DISPATCH_QUEUE_PROORITY_LOW DISPATCH_QUEUE_PROORITY_DEFAULT

18.擷取當前隊列 dispatch_get_current_queue

19.隊列的調度最好使用的是代碼塊

20.關於多線程的事情後期補充

Objective-c學習筆記3

相關文章

聯繫我們

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