block块的用法
来源:互联网 发布:淘宝卖家刷一单10元 编辑:程序博客网 时间:2024/06/05 20:23
block块有3种用法:1.block作为对象的属性,2.block作为方法的参数,3.block作为返回值!!!(扩展非常强!!)。
我们现在先来看看第一种用法:block作为对象的属性,好处是把block传给了person类,person对象回调了block块。
Person.h
@interface Person : NSObject/** block :ARC使用strong 非ARC copy */@property(nonatomic, strong) void(^block)();@end
ViewController.m
#import "ViewController.h"#import "Person.h"@interface ViewController ()@property(strong, nonatomic)Person *p;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //1.block作为对象的属性 Person *p = [[Person alloc] init]; //block -- inlineBlock void(^ZBBlock)() = ^() { NSLog(@"block"); }; p.block = ZBBlock; _p = p;}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ self.p.block();}
第二种:block作为方法的参数,用处是ViewController回调了block代码块,Person对象可以往ViewCrotroller传值和传事件,类似代理。
Person.h
@interface Person : NSObject- (void)eat:(void(^)(NSString *))block;@endViewController.m#import "ViewController.h"#import "Person.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //2.block作为方法的参数 Person *p = [[Person alloc] init]; [p eat:^(NSString *s) { NSLog(@"爱吃%@", s); }];}
第三种:block作为返回值。因为函数有返回值,所以可以用.语法调用方法。返回值是block。
Person.h
@interface Person : NSObject- (void(^)(int))run;@end Person.m#import "Person.h"@implementation Person- (void (^)(int))run{ return ^(int m){ NSLog(@"哥们跑了%d米", m); };}@end ViewController.m#import "ViewController.h"#import "Person.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //3.block作为返回值 Person *p = [[Person alloc] init]; p.run(300);}
阅读全文
0 0
- block块的用法
- block块的用法
- block块的一些简单用法
- iOS中使用block块的用法
- OC中块Block的用法
- block块的介绍
- iOS的block块
- OC------block块的使用
- block块的一些理解
- Block块的学习笔记
- 烦人的小东西 block块
- Objective-c的block(块)
- ios 块的使用(block)
- block代码块的使用
- block代码块的使用
- 块元素(block)的特点
- block块
- block块
- CSU-ACM2017暑假集训比赛7
- 使用tweepy爬twitter图片
- 定义一个方法找出输入的三个整数的最大值
- 【POJ
- HDU6147 Pokémon GO II (2017百度之星程序设计大赛
- block块的用法
- Spring配置mybatis
- HDU 2448 Mining Station on the Sea(Floyd+最优匹配)
- linux awk使用
- Spring编程式事务管理
- python中与print有关的一些字符串控制
- 【Linux学习笔记】2:Linux命令基本格式
- 数独生成算法
- 5332. 【NOIP2017提高A组模拟8.23】密码 AC自动机+数位DP