1 typedef void (^CallBack)(int index); 2 3 @property(nonatomic, copy)CallBack callBack;
1 - (IBAction)click2:(id)sender 2 { 3 if(self.callBack) 4 self.callBack(2); 5 } 6 7 8 - (IBAction)click3:(id)sender 9 { 10 if(self.callBack) 11 self.callBack(3); 12 }
1 SecondViewController *secondController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil]; 2 3 secondController.callBack = ^(int index) 4 { 5 self.clickBtnLabel.text = [NSString stringWithFormat:@"click %d", index]; 6 }; 7 8 [self.navigationController pushViewController:secondController animated:YES];
- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))block;
簡單舉個例子,咱們要在字典中根據key來查找某個value,而後把value記錄下來。html
1 NSArray *keyArray = @[@"aa", @"ddd", @"cc", @"bb", @"ww", @"111"]; 2 NSArray *valueArray = @[@"apple", @"ios", @"mac", @"xcode", @"view", @"array"]; 3 NSDictionary *enumDict = [NSDictionary dictionaryWithObjects:valueArray forKeys:keyArray]; 4 __block NSString *valueString = nil; 5 [enumDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ 6 if([key isEqualToString:@"bb"]) 7 { 8 valueString = obj; 9 *stop = YES; 10 } 11 }];
整個過程變的簡單了。ios
還有在實現UIView動畫的時候,block能讓咱們更加簡單高效的實現不少特效。xcode
1 [UIView animateWithDuration:0.5 animations:^{ 2 animateView.alpha = 0.0; 3 } completion:^(BOOL finished) { 4 animateView.alpha = 1.0; 5 }];
這段代碼實現了view透明度從1.0變到徹底透明,用時0.5秒,當動畫結束後從新顯示view。app