最近时间比较充足,心血来潮,想把我们的项目用Swift来实现一下,趁着好好学习一下Swift,好多问题在实施的时候都暴露出来了,今天就是遇到一个问题:我们的导航栏的自定义的导航栏,左右有可能有按钮,有可能没有,按钮的点击事件通过代理方法来暴露,所以,代理方法有时候不需要实现,有时候需要实现,因此,代理方法就必须是可选类型的.在OC实现的时候使用@protocol关键字,但是在Swift里面就不行了.原因如下:
Swift 版可选实现的协议原生的Swift protocol里没有可选项,所有定义的方法都是必须实现的。如果我们想要像Objective-C里那样定义可选的接口方法,就需要将接口本身定义为Objective-C的,也即在protocol定义之前加上@objc。另外和Objective-C中的@optional不同,我们使用没有@符号的关键字optional来定义可选方法:
网友评论