• block在代理,kvo中传递数据效率最高

实现原理

//
//  SecondViewController.h
//  test
//
//  Created by 裴波波 on 16/4/8.
//  Copyright © 2016年 裴波波. All rights reserved.
//

#import <UIKit/UIKit.h>

//先定义一个有参数,参数类型为NSString * 类型,无返回值的block类型
typedef void(^Myblock)(NSString *);
@interface SecondViewController : UIViewController

@property(nonatomic,copy) Myblock frstBlock;

//定义方法参数是block
-(void)testANewBlock:(Myblock) block;

@end

  • .m文件实现

//
//  SecondViewController.m
//  test
//
//  Created by 裴波波 on 16/4/8.
//  Copyright © 2016年 裴波波. All rights reserved.
//

#import "SecondViewController.h"

@interface SecondViewController ()

@property (weak, nonatomic) IBOutlet UILabel *lblName;
@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

-(void)testANewBlock:(Myblock)block{

    //调用block,此时block的实现代码在哪里写的就会在哪里执行.此时blcok实现在ViewControlle中写的,执行时跳入A控制器,把参数@"裴波波" 传入到Viewcontroller控制器
    block(@"裴波波");
}


@end


  • viewcontroller控制器代码

//
//  ViewController.m
//  test
//
//  Created by 裴波波 on 16/4/8.
//  Copyright © 2016年 裴波波. All rights reserved.
//

#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *btn;

@end

@implementation ViewController


-(void)viewDidLoad{

    [super viewDidLoad];
}

//点击按钮跳转控制器
- (IBAction)clickButton:(id)sender {
    
    SecondViewController * seVc = [SecondViewController new];
    
    //调用secondVC方法,字定义secondVc中调用block的时候要执行的代码,在secoVc中调用block-----block在哪里就在那个控制器里面执行block,
    [seVc testANewBlock:^(NSString * name) {
        NSLog(@"peibobo---%@",name);
        [_btn setTitle:name forState:UIControlStateNormal];
    }];
}


@end



小结: 谁要穿值谁就定义含有block的参数的方法,在方法内部调用blcok,将要传递的参数给了blcok,blcok跳进实现它要执行代码的'地方'执行代码.传值完成,如果涉及到三层以上的回调建议不要使用,因为这样会乱的.尤其是界面间的跳转,可以选择用通知.

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
猜你喜欢
  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案