项目介绍:
block的5种基本用法的总结;适合初学者
As a local variable
As a property:
As a method parameter:
As an argument to a method call:
As a typedef:demo写的很low,希望大家好的建议
[Objective-C] 查看源文件 复制代码
控制器一 #import "ViewController.h" #import "SecondViewController.h" @interface ViewController () @property (nonatomic,copy) int (^FirstBlock)(int ,int); @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.FirstBlock = ^int(int a,int b){ return a + b; }; } /* * 1.作为本地变量 As a local variable: returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...}; */ - (IBAction)localVariable:(id)sender{ __block int sum ; int (^myBlock)(int,int) = ^int(int a ,int b){ sum = a +b; return sum; }; NSLog(@"这是作为本地变量的----%d",myBlock(1,2)); } /* * 2. As a property: @property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes); */ - (IBAction)asAproperty:(id)sender { NSLog(@"这是作为属性的----%d",self.FirstBlock(2,3)); } /* * 3.作为方法参数 As a method parameter: */ - (IBAction)Asmethodparameter:(id)sender { NSLog(@"作为方法参数被调用----%d",[self testMethodwithBlock:^int(int a, int b) { NSLog(@"http://fuckingblocksyntax.com/ a = %d,b = %d",a,b); return a * b -b; }]); } /*4.作为方法传递 *As an argument to a method call: */ - (int)testMethodwithBlock:(int(^)(int a,int b))MehtodBlock{ //这个可能是传过来的参数 __block int i = 10; int sum = 0; if (MehtodBlock) { sum = MehtodBlock(i,2*i); } return sum; } - (IBAction)presentSecondVC:(id)sender { SecondViewController *secondVC = [[SecondViewController alloc]init]; secondVC.block = ^(id acolor){ self.view.backgroundColor = acolor; }; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:secondVC]; [self presentViewController:nav animated:YES completion:nil]; } 控制器二 #import "SecondViewController.h" @interface SecondViewController () @end @implementation SecondViewController - (void)viewDidLoad { [super viewDidLoad]; self.title = @"这是第二个页面"; } - (IBAction)gotoFirstVC:(id)sender { if (self.block) { self.block([UIColor redColor]); } [self dismissViewControllerAnimated:YES completion:nil]; }
testBlock.zip
(66.95 KB, 下载次数: 322)
2016-8-29 23:47 上传
点击文件名下载附件
block的5种使用
推荐:
PYPhotosView 用法简单的呈现一组图片的框架(高仿QQ/微信)