美文网首页
swift 中判断方法是否已经被实现

swift 中判断方法是否已经被实现

作者: iOS程序员asdf | 来源:发表于2017-12-29 15:15 被阅读0次

    在OC中有个方法可以判断对象方法是否被实现,是responseToSelector,在查找swift是否有这个功能的时候基本上网上都是告诉用这个方法来判断,但是这个方法是根据runtime来判断的,是swift不具备的功能,所以如果用swift调用这个方法会报错,swift是用了另一个机制。
    首先用一个例子说明:
    如果定义一个代理:

    @objc protocol delegate {
        @objc optional func buyBtnClicked()
        @objc optional func makeSureGetHD()
        @objc optional func mailEquipment()
    }
    

    定义了3个可选的方法。
    首先要判断delegate是否存在,然后在判断方法是否被实现:

    if self.delegate?.buyBtnClicked?() == nil {
        // code
    }
    

    这么调用就可以了。
    self.delegate?如果有delegate会返回一个delegate,如果没有就会返回nil,self.delegate?. buyBtnClicked?(),如果delegate存在并且实现了buyBtnClicked这个方法,那就会调用这个方法,如果代理不存在或者是没有实现这个方法,会返回nil,但是不会崩溃,这样就可以判断方法是否实现,但是要注意在做这个方法的判断的时候如果已经实现了,会直接调用,不要像OC时在判断完在调用一遍方法。

    相关文章

      网友评论

          本文标题:swift 中判断方法是否已经被实现

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