美文网首页
Swift中的通用闭包函数,自定义属性、传参(block)

Swift中的通用闭包函数,自定义属性、传参(block)

作者: 9岁就很6 | 来源:发表于2022-03-04 10:33 被阅读0次

    在全局配置文件中 声明
    一个不带参数和一个带泛型<T>类型的参数 typealias,

    声明代码如下

    //通用block
    typealias BlockWithNone = () -> ()
    //T可以代表元组、单个对象
    typealias BlockWithParameters<T> = (T) -> ()
     
    

    typealias BlockWithNone 就类似oc中的 typedef void(^bolck)(); typealias BlockWithParameters 就类似oc中的 typedef void(^bolck)(NSObject *object);

    <T> 这边的T可以理解为占位,使用他的时候直接传入你想要的对象作为参数传递

    使用代码如下
    .1属性 无参数

      public var successBlock: BlockWithNone?
        
      public var errorBlock: BlockWithNone?
        
    //当前类直接调用即可,类似OC的 !block?:block()
    
    successBlock?()
    
    errorBlock?()
    
    //外部调用这个block 
    
     vc. successBlock = {
                print("无参数block-successBlock 回调成功")
            }
    
     vc. errorBlock = {
                print("无参数block-errorBlock 回调成功")
            }
    
    

    .2属性 有参数 T 可以代表多个参数 例如随便声明4个带参闭包

     /// 回调一组 元组
        var didBlock: BlockWithParameters<(index: Int, word: String)>? = nil
    
       var textChangeBlock: BlockWithParameters<(IndexPath, String)>?
    
        var deleteBlock: BlockWithParameters<IndexPath>?
        
       var selectBlock: BlockWithParameters<NSobjce>?
    
    
    //当前类直接调用即可,类似OC的 !block?:block(参数1,参数2)
    
    didBlock?((3,"文本"))
    
    textChangeBlock?((indexPath, "文本"))
    
    deleteBlock?(indexPath)
    
    selectBlock?(model)
    
    
    //举例 外部调用这个textChangeBlock 
    //tuple 元组 直接取第1、第二
      cell.textChangeBlock = { [weak self] tuple in
                print("\(indexPath: tuple.0)") 
                print("\(indexPath: tuple.1)") 
            }
    
    
     searchView.selectBlock = { [weak self] model in
                 print(model)
            }
    
    

    相关文章

      网友评论

          本文标题:Swift中的通用闭包函数,自定义属性、传参(block)

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