您的位置:首页 > 移动开发 > IOS开发

IOS开发之----代码块的使用

2013-01-08 14:44 218 查看
/*
在代码快打印数字
*/
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
*/
__block  int  localNum =500;
void(^changLocalNumBlock)(int)= ^(int i){
localNum = localNum+i;
};
changLocalNumBlock(30);
NSLog(@"changLocalNumBlock: %d",localNum);


参考这个博客:
http://blog.sina.com.cn/s/blog_71715bf8010166ux.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: