Block
Block
Block類型
無參數無返回值
block自己不會執行,必須調用才會執行block大括號里的代碼段
void (^block)() = ^(){NSLog(@"無參數");};block();結果
2015-07-28 20:06:56.839 OC10_Block[3182:202852] 無參數無參數有返回值
有返回值在最后段要加上return
int (^block)() = ^(){return 100;}; // 沒有參數也要加上括號NSLog(@"%d",block());結果:
2015-07-28 20:08:18.328 OC10_Block[3214:203801] 100有參數無返回值
void (^)(int ,int )是block的類型,它的名是block,我們也通過名進行調用
void (^block1)(int ,int ) = ^(int a,int b){NSLog(@"%d",a + b);};// 調用block1(10,20);結果:
2015-07-28 20:10:12.211 OC10_Block[3251:205047] 30有參數有返回值
int (^block)(int,int) = ^(int a,int b){return a + b;};NSLog(@"%d",block(10,20));結果:
2015-07-28 20:11:17.154 OC10_Block[3274:205787] 30block與局部變量
// block和局部變量// __block相當于一個在block中修改的權限,否則它只能取值,不能賦值__block int a = 10;void (^block)() = ^(){a = 10 * a;NSLog(@"%d",a);};block();小練習
參數:日期的字符串,返回:NSDate類型的日期對象
NSDate *(^block)(NSString *) = ^(NSString *str){NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];return [formatter dateFromString:str];};NSLog(@"%@",block(@"2015-07-28 12:12:12"));通過block對數組進行遍歷
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];// 系統的block[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {NSLog(@"%@",obj);}];總結
- 上一篇: OllyDbg的简单使用
- 下一篇: 最优控制理论 八、CasADi求解路径约