Blocks一些特性介紹

2021-07-01 18:17:41 字數 2444 閱讀 6538

//block特性介紹

#import

////#include

//#include

//using namespace std;

//template

//void blocktest(t pblock)

////static void hi(void)

////int main(int argc, const char* argv)//

intmain(

intargc,

const

char

* argv) ;

則表示乙個函式塊,它接受

void

型別引數,並且返回

void

puts

("hello lei"

);return;};

iblocks();

//step2 block

陣列void

(^p[2])(

void

) = ,

^(void)};

p[0](),

p[1]();

//這裡的

p型別為

void(^2)(void),

表示含有2個

void(^)void

塊引用元素變數

//block

語法遞迴函式實現

//一種方法是全域性的或都

static

的block

可以實現

void

(^q)(

int)= 0;

//初始化變數

static

void

(^ const

blocks)(

int) = ^(

inti)

};q = blocks;

q(2);

//遞迴一種方法就是直接將

block

塊也用__block

來進行宣告就可以了

__block

void

(^tblocks)(

int);

tblocks = ^(

inti)

};tblocks(2);

//blocks

結合泛型的使用

//一般的外部函式能夠作為模板引數

//c++

標準中明確指出,模板引數必須為常量表示式,如果是函式的話必須是帶有外部連線(即

external-linkage

)的函式指標。而

blocks

表示式首先就不是乙個常量表示式,然後它也沒有外部連線。

//泛型的好處:最大的意義就是**重用和型別安全了,不需要在執行時過多的強制型別轉換,在編譯時就知道型別。 //

閉包是乙個函式(或指向函式的指標),再加上該函式執行的外部的上下文變數(有時候也稱作自由變數)。

// block

實際上就是

objective-c

語言對於閉包的實現。

block

配合上dispatch_queue

,可以方便地實現簡單的多執行緒程式設計和非同步程式設計

//閉包:

(假設兩個臨時變數陣列,在

block

函式塊裡進行拷貝,原始資料不變)//

宣告block

的時候實際上是把當時的臨時變數又複製了乙份,在

block

裡即使修改了這些複製的變數,也不影響外面的原始變數。即所謂的閉包

//當變數是乙個指標的時候,

block

裡只是複製了乙份這個指標,兩個指標指向同乙個位址。所以,在

block

裡面對指標指向內容做的修改,在

block

外面也一樣生效

nsmutablearray

*marray = [

nsmutablearray

arraywithobjects

:@"a"

,@"b"

,@"abc"

,nil

];nsmutablearray

*marraycount = [

nsmutablearray

arraywithcapacity

:1];

[marray

enumerateobjectswithoptions

:nsenumerationconcurrent

usingblock

: ^(

idobj,

nsuinteger

idx,

bool

*stop)];

nslog

(@"%@"

,marraycount);

//閉包的好處:用處有兩個,乙個是前面提到的可以讀取函式內部的變數,另乙個就是讓這些變數的值始終保持在記憶體中

}return0;}

一些排序演算法的特性介紹

1.選擇排序 選擇排序每次從未排序的所有資料中通過比較,選出最小的資料,並將之與未排序資料中的第乙個資料交換位置,然後繼續按照此方法從剩餘的資料中選擇最小的資料,並按照上述方法處理,如此迴圈,直至所有資料排好序。特性 執行時間和輸入無關。即 即使陣列是有序的陣列,但是它和隨機無序陣列的排序時間相同。...

python 的一些特性

class student object say this is a student class def init self,name,age 構造器 self.name name self.age age classmethod 類方法 def showclassmethod cls print ...

https的一些特性

支援客戶 伺服器模式 簡單快速 客戶向服務端請求服務時,只需傳送請求方式和路徑。靈活 允許傳輸任意型別的資料物件。由content type加以標記。無連線 每次響應乙個請求,響應完成以後就斷開連線。無狀態 伺服器不儲存瀏覽器的任何資訊。每次提交的請求之間沒有關聯。持續性瀏覽器和伺服器建立tcp連線...