美文网首页
iOS RAC的铺垫block

iOS RAC的铺垫block

作者: Onlyoner | 来源:发表于2017-06-13 15:43 被阅读0次

你真的会用block吗?

block作为对象的`属性`
block作为方法的`参数`
block作为`返回值` (扩展性特别强)

在强化一下:

1.block作为对象的属性

Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
/* block 在arc下用strong就可以 非ARC下 copy */
/** block */
@property (nonatomic,copy)  void(^block)();
@end
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
/** Person *p */
@property (nonatomic,strong) Person *p;
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    
    Person *p = [[Person alloc] init];
    void(^XDBlock)() = ^() {
        
        NSLog(@"XDBlock");
    };
    //调用
    // XDBlock();
    p.block = XDBlock;
    _p = p;
    
}
$NSLog:XDBlock

2.block 作为方法的参数

Person.h
#import <Foundation/Foundation.h>

@interface Person : NSObject

- (void)eat:(void(^)(NSString *))block;

@end
Person.m
@implementation Person
- (void)eat:(void (^)(NSString *))block{

    block(@"😄");
}
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
/** Person *p */
@property (nonatomic,strong) Person *p;
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    
   Person *p = [[Person alloc] init];
    [p eat:^(NSString *a) {
    
        //这里面的代码块就是传递的参数
        NSLog(@"吃东西%@",a);
    }];

    
}
$NSLog:吃东西😄

3.block作为返回值 (扩展性特别强)

Person.h
#import <Foundation/Foundation.h>

@interface Person : NSObject

- (void(^)(int))run;

@end
Person.m
@implementation Person
- (void(^)(int))run{
    return ^(int m){
        NSLog(@"跑了%d米",m);
    };
}
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
/** Person *p */
@property (nonatomic,strong) Person *p;
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    
   Person *p = [[Person alloc] init];
     Person *p = [[Person alloc] init];
//    [p run:3];
     p.run(3);

    
}
$NSLog:2017-06-13 15:08:32.164 Block[30445:3119801] 跑了3米

相关文章

  • iOS RAC的铺垫block

    你真的会用block吗? 在强化一下: 1.block作为对象的属性 2.block 作为方法的参数 3.bloc...

  • iOS RAC学习

    一、RAC使用基础认知 RAC编程思想:响应式编程+函数式编程 在iOS中,类之间的传值,无非就是block、de...

  • (一)、iOS RAC - RACSignal

    (一)、iOS RAC - RACSignal (二)、iOS RAC - RACDisposable(三...

  • ios开发中使用RAC代替block传值

    RAC可以实现KVO、代理、通知、block的功能,可谓集多功能于一身。本篇文章介绍RAC是如何代替block传值...

  • 01-ReactiveObjC使用记录

    RAC 的核心思想:创建信号 - 订阅信号 - 发送信号 ,并且在 RAC 中我们会看到大量的 block RAC...

  • iOS-2 Block

    block块 系列文章: iOS Block浅浅析 - 简书 iOS Block实现原理 iOS Block __...

  • IOS RAC实践

    前言 RAC使用-->IOS RAC使用 -- ReactiveObjC 本文使用RAC+MVVM来模拟用户登录 ...

  • 2019-12-10

    iOS开发之RAC(一)初级篇 一、RAC是什么? 1、RAC全称:ReactiveCocoa, Github 一...

  • iOS Block存储域及循环引用

    系列文章:iOS Block概念、语法及基本使用iOS Block实现原理iOS Block __block说明符...

  • iOS Block实现原理

    系列文章:iOS Block概念、语法及基本使用iOS Block __block说明符iOS Block存储域及...

网友评论

      本文标题:iOS RAC的铺垫block

      本文链接:https://www.haomeiwen.com/subject/npidqxtx.html