Objective-C代码块(block)的练习



int
iVisen = 1000; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //int代码块 int mutl =7; int (^visenBlock)(int) = ^(int num){return num *mutl;}; NSLog(@"%d",visenBlock(4)); //nsstring代码块 void (^visenPrintString)(NSString *str) = ^(NSString *str){ NSLog(@"print:%@", str); }; visenPrintString(@"aaaa"); //代码用在字符串数组排序 NSArray *stringArray = [NSArray arrayWithObjects:@"abc 1", @"abc 21", @"abc 12",@"abc 13",@"abc 05",nil]; NSComparator visenSortBlock = ^(id string1,id string2){ return [string1 compare:string2]; }; NSArray *sortArray = [stringArray sortedArrayUsingComparator:visenSortBlock]; NSLog(@"sortArray:%@", sortArray); //代码块的递归调用 //代码块想要递归调用,代码块变量必须是全局变量或者是静态变量,这样在程序启动的时候代码块变量就初始化了,可以递归调用 static void (^ const visenRecursionBlock)(int) = ^(int i){ if (i>0) { NSLog(@"num: %d",i); visenRecursionBlock(i-1); }; }; visenRecursionBlock(3); //在代码块中使用全局变量 void (^visenVariablesBlock)(void) =^(void){ iVisen ++; NSLog(@"%d",iVisen); }; visenVariablesBlock(); //在代码块中使用局部变量 //在代码块中改变局部变量编译不通过。怎么在代码块中改变局部变量呢?在局部变量前面加上关键字:__block __block int iVisena= 1000; void (^visenVariablesBlockB)(void) = ^(void){ iVisena++; NSLog(@"local:%d", iVisena); }; visenVariablesBlockB(); }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值