美文网首页
Block 之传值

Block 之传值

作者: 简洁的想法 | 来源:发表于2017-06-16 17:27 被阅读8次

传值流程:

  1. 定义一个 block
  2. 在A实例中,传值给 block
  3. 在B实例中,实现block,获取到值

.h文件

// 定义 block 的形式
typedef void (^GetNameBlock)(NSString *name);

@interface Son : Father

@property (nonatomic, copy) GetNameBlock aBlock;

- (void)dothing;
- (void)getValue:(GetNameBlock)nameBlock;

@end

.m文件

- (void)dothing
{
    // 传值给 block
    if (_aBlock) {
        _aBlock(@"kim");
    }
  
}
// 把实现的 block 传过来了
- (void)getValue:(GetNameBlock)nameBlock
{
    _aBlock = nameBlock;
}

第一种形式:直接实现 block 传值

ViewController 的.m文件

// 实现 block
    _son.aBlock = ^(NSString *name) {
        NSLog(@"****小孩的名字 %@ ****",name);
    };

第二种形式:变相实现 block 传值

    _son = [[Son alloc] init];

// 变相实现 block
    [_son getValue:^(NSString *name) {
        NSLog(@"****小孩的名字 %@ ****",name);
    }];
// 事件
    [_son dothing];

附件(完整的.h文件 和 .m文件)

完整的.h文件

#import "Father.h"


# pragma mark - 协议
@protocol careChild <NSObject>

- (void)care:(NSString *)name;

@end

// 定义 block 的形式
typedef void (^GetNameBlock)(NSString *name);

@interface Son : Father

@property (nonatomic, weak) id<careChild> delegate;
@property (nonatomic, copy) GetNameBlock aBlock;


- (void)dothing;
- (void)getValue:(GetNameBlock)nameBlock;

@end

完整的.m文件

#import "Son.h"

@implementation Son

- (void)dealloc {

//    NSLog(@"%@", @"Son销毁了");

}

- (id)init
{
    self = [super init];
    if (self) {
//        NSLog(@"%@", NSStringFromClass([self class]));
//        NSLog(@"%@", NSStringFromClass([super class]));
    }
    return self;
}


- (void)dothing
{
    // 传值给 block
    if (_aBlock) {
        _aBlock(@"kim");
    }
    
    /*
     传值给 delegate
     
     [self.delegate care:@"kim"];

     */
}

// 把实现的 block 传过来了
- (void)getValue:(GetNameBlock)nameBlock
{
    _aBlock = nameBlock;
}

@end

相关文章

  • iOS开发-block传值

    block传值步骤比代理传值步骤简便,实际开发中经常使用到。 block传值分为block属性传值和block方法...

  • iOS-block总结

    block回调-传值 其实就是block作为参数传值方:类的.h有block属性,类的.m有block调用(传值,...

  • Block传值

    iOS传值一共有四种:属性传值,代理传值,通知传值以及Block传值; 今天我们来说一下Block传值: 概念:带...

  • oc中使用delegate和block进行反向传值

    delegate传值 block实现传值

  • iOS开发之利用Block逆向传值

    一、书写规范Block传值,需要注意的是,谁传值就需要定义Block,捕获方仅仅需要传递Block给传值方,并处理...

  • block开发使用场景

    block传值 利用block去代理代理传值 1. 代理传值 点击当前控制器Viewcontroller利用mod...

  • Block 之传值

    传值流程: 定义一个 block 在A实例中,传值给 block 在B实例中,实现block,获取到值 .h文件 ...

  • iOS 传值方式

    1,从前向后传值:属性传值 2, 从后向前传值: block、 代理、 通知 结论1, block、 代理 传值用...

  • 下面是我自己对block的理解和运用

    IOSBlock之页面之间的传值问题 一.字典 数组和字符串的传值 blcok的基本格式:返回值类型(^block...

  • iOS 传值的方式的区别

    1.属性传值。 2.block传值。 3.代理传值(delegate) 4.通知传值(notification)。...

网友评论

      本文标题:Block 之传值

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