美文网首页
oc之block模式

oc之block模式

作者: 的的可可 | 来源:发表于2019-08-16 15:32 被阅读0次

https://www.jianshu.com/p/132052e0e749
block的是本质是对象。像javascript的闭包,函数里面的函数,java中的代码块,c中的函数指针等。就好像,事先放一段代码在这里,然后需要的时候回过头来调用。我们知道,代码执行是按顺序调用的,也就是我们常说的面向过程。但是block可以反向调用。只不过block可以写在函数里面,也可以说它是函数中的函数,它是比较特殊的函数。block有很多应用场景,我们现在说其中一种应用场景。

  • 假设cell上有一个按钮,我们点击这个按钮后会跳转到其它界面,同时需要带走一些当前cell上的数据到其它界面

    • 假设你采用的MVC模式,那么在当前tableViewcell.h中需要这样写。
#import "tabViewcellModel.h"
//自定义Block实现点击cell上的按钮跳转并传递cell上的值
typedef void(^nameOfBlock)(tabViewcellModel *model, UIButton *button);

@interface tabViewCell : UITableViewCell

//携带cell上数据的model
@property (nonatomic, strong) tabViewcellModel *model;
//自定义block的属性
@property (nonatomic, copy) nameOfBlock consultBlock;
//自定义点击咨询按钮的Block的方法
- (void)handlerButtonAction:(nameOfBlock)block;
@end
  • 在tableView.m中
//cell上按钮点击事件
- (IBAction)buttonClick:(id)sender {
    if (self.consultBlock) {
        self.consultBlock(self.model, self.button);
    }
}
//实现自定义的block方法
- (void)handlerButtonAction:(nameOfBlock)block
{
    self.consultBlock = block;
}
  • tableViewController中
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    tableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tableViewCell"];
    cell.model = self.subTag[indexPath.row]; 
    
    [cell handlerButtonAction:^(PHDoctorListModel * _Nonnull model, UIButton * _Nonnull button) {
      这里就可以做跳转的逻辑处理并且可以用属性传值携带当前cell上的值了
      VC.属性名 = cell.model.属性名
    }];
    
    return cell;
}

相关文章

  • oc之block模式

    block的是本质是对象。像javascript的闭包,函数里面的函数,java中的代码块,c中的函数指针等。就好...

  • 总结

    重点: UI视图,OC语言,Runtime,内存,Block,多线程,Runloop,网络,设计模式,架构/框架,...

  • swift 调用 OC中的block

    OC中声明block; OC中实现block swift中实现

  • 《OC之Block》

    由来:温故而知新可以为师矣。 一.Block的声明 二.Block的逆向传值 1:传值方-------------...

  • Swift 之闭包

    闭包 闭包类似于 OC 的 block,但是比 OC 的 block 应用面更广 在 OC 中 block 是匿名...

  • OC-简单粗暴理解Block的本质

    block简单粗暴的理解 OC的block底层就是个OC对象,包含isa指针,封装了函数的调用. OC的block...

  • iOS Block本质笔记

    OC中定义block block访问外部参数 OC转C++分析 block的变量捕获机制 为了保证block能够正...

  • Swift之闭包

    前言 闭包类似于OC的block,但是比OC的block应用面更广 在OC中block是匿名函数 在swift中函...

  • iOS&Swift&OC 闭包和Block的相互转化

    一、Swift的闭包 -> OC的block 二、OC的block -> Swift的闭包

  • iOS原生&JS交互

    OC 获取js中的key OC调用js方法 JS调用OC中不带参数的block JS调用OC中带参数的block ...

网友评论

      本文标题:oc之block模式

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