[java]
<P style="TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 26px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN-TOP: 0px; FONT-FAMILY: Arial; WORD-WRAP: normal; MARGIN-BOTTOM: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; COLOR: rgb(73,73,73); FONT-SIZE: 14px; WORD-BREAK: normal; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"></P><PRE class=plain name="code"></PRE><PRE class=java name="code"> /*
在代碼快打印數字
*/
NSLog(@"—————-resultBlocks———————->");
int(^resultBlocks)(int) =^(int num)
{
return num*20;
};
int resultNum = resultBlocks(2);
NSLog(@"result: %4d",resultNum);
NSLog(@"————–myprintBlock————————>");
void(^myprintBlock)(NSString *x)= ^(NSString *str){NSLog(@"@printBlock: %@",str);};
myprintBlock(@"Hello block");
NSLog(@"—————printNumBlock———————–>");
/*
在代碼快多個參數用 逗號隔開
*/
void(^printNumBlock)(int,int);
printNumBlock = ^(int num,int num2)
{
num = num+num2;
NSLog(@"printNum: %d",num);
};
printNumBlock(10000,1000);
NSLog(@"—————遞歸使用———————–>");
/**
代碼快用在遞歸時候要註意瞭,要在調用之前初始化好整個代碼快,否則會運行錯誤!
怎麼結局錯誤呢?
1: 用sataic 關鍵字 使其在真個類初始化之前初始化好
2: 使用 __block 關鍵字
*/
__block void(^const blocks)(int)=^(int i)
{
if (i > 0) {
NSLog(@"num: %d",i);
blocks(i- 1);
}
};
blocks(4);
static void(^const blocks2)(int)=^(int i)
{
if (i > 0) {
NSLog(@"num: %d",i);
blocks2(i- 1);
}
};
blocks2(4);
NSLog(@"—————sortArray———————–>");
/*
在代碼快中字符串數組排序
*/
NSArray *stringArray = [NSArray arrayWithObjects:@"abc 1", @"abc 21", @"abc 12",@"abc 13",@"abc 0.5", nil];
NSComparator sortBlcok = ^(id String1, id String2)
{
return [String1 compare:String2];
};
NSArray *sortArray = [stringArray sortedArrayUsingComparator:sortBlcok];
NSArray *sortArray2 = [stringArray sortedArrayUsingComparator:^(id String1, id String2){
return [String1 compare:String2];
}];
NSLog(@"stringArray: %@",stringArray);
NSLog(@"sortArray: %@",sortArray2);
NSLog(@"——changeGlobalBlock—————————>");
/*
在代碼快中 改變全局部變量編
*/
void(^changeGlobalBlock)(void)=^(void){
global++;
};
changeGlobalBlock();
NSLog(@"changeGlobalBlock: %d ",global);
NSLog(@"——changLocalNumBlock—————————>");
/*
在代碼快中 改變局部變量編譯是通不過的,需要在前面加 __block 關鍵字,否則會報這樣的一個錯誤
Variable is not assignable(miss_block type specifier
*/ www.aiwalls.com
__block int localNum =500;
void(^changLocalNumBlock)(int)= ^(int i){
localNum = localNum+i;
};
changLocalNumBlock(30);
NSLog(@"changLocalNumBlock: %d",localNum);</PRE>
<PRE></PRE>
<PRE class=java name="code">參考這個博客:</PRE><PRE class=java name="code">https://blog.sina.com.cn/s/blog_71715bf8010166ux.html
</PRE>