#import
//定義⼀乙個block,返回值為bool,有兩個nsstring引數。實現:判
//斷字串是否相等。
bool (^comparestring)(nsstring *, nsstring *) = ^(nsstring *str1, nsstring *str2)else
};
if (comparestring(@"sss",@"sss"))
//定義⼀乙個block,返回值為nsinteger,有兩個引數,⼀乙個是 nsarray,⼀乙個是nsstring。實現:判斷陣列時候包含此字串,如 果包含,返回字串的下標,如果不包括,返回-1。
nsarray *arr = @[@"aa",@"ss",@"ww"];
nsstring *str = @"ss";
int (^find)(nsarray *, nsstring *) = ^(nsarray *arr, nsstring *str ) }
return -1;
};
int f = find(arr,str);
nslog(@"%d",f);
//建立⼀乙個陣列,初始化為@「123",@"21",@"33",@"69", @「108」,
//@「256」。使⽤用block語法,進⾏行陣列的排序。並輸出內容。 排序結果:108 123 21 256 33 69
//提⽰示:sortedarraywithoptions:usingcomparator:
//不可變陣列
nsarray *arr1 = @[@"23", @"1", @"3", @"2", @"108"];
nsarray *arr2 = [arr1 sortedarrayusingcomparator:^nscomparisonresult(id obj1, id obj2)
return nsorderedsame; }
];
nslog(@"sortarray1:%@", arr2);
nsarray *arr11 = @[@"23", @"1", @"3", @"2", @"108"];
nsarray *a1 = [arr11 sortedarrayusingcomparator:^nscomparisonresult(id obj1, id obj2)
return nsorderedsame; }
]; nslog(@"sortarray1:%@", a1);
//5, 給可變陣列排序的block
//5,1
nscomparator sortblock = ^(id string1, id string2) ;
nsmutablearray *stringarray = [nsmutablearray arraywithobjects:@"g", @"c", @"b", @"a",nil];
nsarray *a = [stringarray sortedarrayusingcomparator:sortblock];
nslog(@"array:%@", a);
//分開寫的block 不可變陣列
nscomparator sortblock1 = ^(id string1, id string2) ;
nsarray *stringarray2 = [nsarray arraywithobjects:@"g", @"c", @"b", @"a",nil];
nsarray *a2 = [stringarray2 sortedarrayusingcomparator:sortblock1];
nslog(@"分開寫的block 可變陣列:%@", a2);
//4. 使用block根據person的age進行排序,並輸出
[array sortusingcomparator:^nscomparisonresult(person *p1 ,person *p2)];
/*//根據年齡 公升序排列
[array sortusingcomparator:^nscomparisonresult(id p1, id p2)
return nsorderedsame;
}];*/
block的用法和陣列排序
一 block我們 都知道函式只可以巢狀呼叫 但決不允 許函式的巢狀定義,這有時給我 們帶來了很大的不便,而 oc提供的 block用法為 我們解決了這個問題 下面簡單說一下 1,block 的用法 1 block 是用來儲存函式 所以給block 賦值時賦 的是整個函式的實現,例如,要在main ...
Block的使用 初探Block
看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...
Block中 block實現原理
三.block中 block實現原理 我們繼續研究一下 block實現原理。1.普通非物件的變數 先來看看普通變數的情況。import int main int argc,const char ar myblock return 0 把上述 用clang轉換成原始碼。struct block byr...