swift - protocol

swift - protocol,第1张

概述Protocol(协议)用于统一方法和属性的名称,而不实现任何功能。协议能够被类,枚举,结构体实现,满足协议要求的类,枚举,结构体被称为协议的遵循者。 遵循者需要提供协议指定的成员,如属性,方法, *** 作符,下标等。 这里只讲和oc 代理类似的那种 一. 声明一个protocol : NSObjectProtocol protocol GGTableViewControllerDelegate:NSO

Protocol(协议)用于统一方法和属性的名称,而不实现任何功能。协议能够被类,枚举,结构体实现,满足协议要求的类,枚举,结构体被称为协议的遵循者。

遵循者需要提供协议指定的成员,如属性,方法, *** 作符,下标等。

这里只讲和oc 代理类似的那种

一. 声明一个protocol : NSObjectProtocol
protocol GGtableVIEwControllerDelegate:NSObjectProtocol {    //方法    func closebuttonDIDClicked()    func tableVIEwDIDSelectedAtIndexPath(indexPath:NSIndexPath)}
二. 声明delegate属性
weak var delegate:GGtableVIEwControllerDelegate?
三. 在合适的地方让delegate 调用代理方法
func closeVIEw() {    print("close vIEw")    if ((delegate?.respondsToSelector("closebuttonDIDClicked")) != nil) {        delegate?.closebuttonDIDClicked()    }}
func tableVIEw(tableVIEw: UItableVIEw,dIDSelectRowAtIndexPath indexPath: NSIndexPath) {        if ((delegate?.respondsToSelector("tableVIEwDIDSelectedAtIndexPath:")) != nil) {            delegate?.tableVIEwDIDSelectedAtIndexPath(indexPath)        } }

在这里,目前还不知道需不需要像oc一样,在调用之前判断代理是否还存在,是否还响应该方法,也不知道这种格式是否正确,求指点一二

四.遵守代理协议
class MainVIEwController: UIVIEwController,GGtableVIEwControllerDelegate {    let vc = GGtableVIEwController()         vc.delegate = self}
五.实现代理方法
//MARK: GGtableVIEwControllerDelegate    func closebuttonDIDClicked() {        print("will close")        let ggVIEw = vIEw.subvIEws.last        ggVIEw?.removeFromSupervIEw()    }    func tableVIEwDIDSelectedAtIndexPath(indexPath: NSIndexPath) {        print(indexPath)    }


项目源码:https://git.oschina.net/lisForCoding/GGTableViewController.git

总结

以上是内存溢出为你收集整理的swift - protocol全部内容,希望文章能够帮你解决swift - protocol所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存