block OC 用法 函数指针 ex1: typedef int(^func_aaa)(id parameter); - (void)testFunc{ func_aaa test; test = ^(NSNumber* qq){ PKLog(@"val: %@",qq); return 456; }; int a = test([NSNumber numberWithInt:123]); PKLog(@"%d",a); } ex1_log: 2016-04-07 17:00:19.028 djcars[5566:210891] 123 2016-04-07 17:00:25.356 djcars[5566:210891] val: 123 2016-04-07 17:00:28.326 djcars[5566:210891] 456 ex2 (在循环内使用Block,block会引用循环体内的值) typedef int(^func_aaa)(id parameter); - (void)testFunc{ NSMutableDictionary *mulAry = [[NSMutableDictionary alloc]init]; for (int i = 0 ; i < 10; i++) { func_aaa test; test = ^(NSNumber* qq){ PKLog(@"val: %@",qq); return i+10; }; [mulAry setObject:test forKey:[NSString stringWithFormat:@"keyNo_is%d",i]]; } PKLog(@"%@",mulAry); NSInteger i = 0; for (func_aaa obj in [mulAry allValues]) { int v = obj([NSNumber numberWithInteger:i++]); PKLog(@"%d",v); } } ex2_log: 2016-04-08 10:36:46.129 djcars[2958:46438] val: 0 2016-04-08 10:36:46.129……
阅读全文