美文网首页
Swift代理

Swift代理

作者: 古月思吉 | 来源:发表于2018-09-30 11:45 被阅读0次

    一、swift代理如何使用?
    1.定义协议&代理变量&调用代理方法:

    //定义协议
    protocol AJImgPickerControllerDelegate: NSObjectProtocol {
        //返回选中的图片
        func backChoosedImages(choosedImages: [AJImgPickerCellModel]?)
    }
    
    //定义代理属性
    weak var delegate:AJImgPickerControllerDelegate?
    
    //调用代理方法
    self.delegate?.backChoosedImages(choosedImages: self?.choosedDataSource)
    

    2.遵循代理&重写代理方法

    vc.delegate = self
    
    //MARK: - AJImgPickerControllerDelegate
    extension PublishDynamicController: AJImgPickerControllerDelegate {
        
        func backChoosedImages(choosedImages: [AJImgPickerCellModel]?) {
            //...
        }
        
    }
    

    二、如果有些代理方法不是必须遵守的,怎么办?

    • 按照上面的方式定义代理方法,会导致delegate需要实现所有的代理方法,而很多时候,代理方法是否实现,是可选的。
      1.可选代理的定义
    @objc protocol SingSoundEvaluatinToolDelegate: NSObjectProtocol {
        //测评停止并返回测评结果
        func oralEvaluatingDidEnd(withResult result: [AnyHashable : Any]!, isLast: Bool)
        //测评开始
        @objc optional func oralEvaluatingDidStart()
    }
    
    
    //调用必须实现的代理方法
    self.delegate?.oralEvaluatingDidEnd(withResult: result, isLast: isLast)
    //调用可选的代理方法
    self.delegate?.oralEvaluatingDidStart?()
    

    相关文章

      网友评论

          本文标题:Swift代理

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