说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Swift中,如何像Objective-C定义可选接口?

HTML文档下载 WORD文档下载 PDF文档下载
原生的Swift protocol里没有可选项,所有定义的方法都是必须实现的。如果我们想要像Objective-C里那样定义可选的接口方法,就需要将接口本身定义为Objective-C的。在本文中,喵神王巍分享了Swift的可选接口。

Objective-C中的protocol里存在@optional关键字,被这个关键字修饰的方法并非必须要被实现。我们可以通过接口定义一系列方法,然后由实现接口的类选择性地实现其中几个方法。在Cocoa API中很多情况下接口方法都是可选的,这点和Swift中的protocol的所有方法都必须被实现这一特性完全不同。


那些如果没有实现则接口就无法正常工作的方法一般是必须的,而相对地像作为事件通知或者对非关键属性进行配置的方法一般都是可选的。最好的例子我想应该是UITableViewDataSource和UITableViewDelegate。前者中有两个必要方法:

-tableView:numberOfRowsInSection:-tableView:cellForRowAtIndexPath:

分别用来计算和准备tableView的高度以及提供每一个cell的样式,而其他的像是返回section个数或者询问 cell 是否能被编辑的方法都有默认的行为,都是可选方法;后者(UITableViewDelegate)中的所有方法都是详细的配置和事件回传,因此全部都是可选的。

原生的Swift protocol里没有可选项,所有定义的方法都是必须实现的。如果我们想要像Objective-C里那样定义可选的接口方法,就需要将接口本身定义为Objective-C的,也即在protocol定义之前加上@objc。另外和Objective-C中的@optional不同,我们使用没有@符号的关键字optional来定义可选方法:

@objc protocol OptionalProtocol {    optional func optionalMethod()}

另外,对于所有的声明,它们的前缀修饰是完全分开的。也就是说你不能像是在Objective-C里那样用一个@optional指定接下来的若干个方法都是可选的了,必须对每一个可选方法添加前缀,对于没有前缀的方法来说,它们是默认必须实现的:

@objc protocol OptionalProtocol {    optional func optionalMethod()  // 可选    func necessaryMethod()          // 必须    optional func anotherOptionalMethod() // 可选}

一个不可避免的限制是,使用@objc修饰的protocol就只能被class实现了,也就是说,对于struct和enum类型,我们是无法令它们所实现的接口中含有可选方法或者属性的。

作者:王巍(@onevcat),iOS和Unity3D开发者。

本文转载自:Swifter

点击链接进入Swift技术社区,了解更多Swift开发的技术热点内容!

又一巨头涉足移动视频分享领域:传雅虎欲收购短视频应用Qwiki 史上最牛:主要靠三消游戏IPO King也许会是第一家 乐视超级电视预约启动 1小时预约近1.4万台 王坚:未来一年阿里云会有很大变化 梁胜:开源并不是做好软件的唯一方式 SourceSafeOffSite 怎么用?哪位高人能指点下! 请教大家一个问题,急啊~~~~~~~!VC里如何使用用VB编写的用户控件?为什么我用的时候编译没有错误,但是运行时会报错? 请问各位大侠哪里有mapobject的教程和程序可以下载?感激不尽!(急用) 关于Weblogic、Websphere、Jboss等几种服务器容器的比较 有没有比DBGrid还好的数据控件可以显示主从表数据 怪问题,特向各位大侠请教? 为什么属性页中的对话框遇到MessageBox就会死机! 奇怪的触发器问题! 我爱上你个女孩,可是我们先在只是做好朋友,内心矛盾。 什么叫发动机充气系数? 什么是充气系数 什么是代定系数法吖我不太清楚 急求高手吖吖吖吖吖吖吖吖吖吖吖吖吖. 李爷爷想利用一面墙围一个长10米,宽5米的鸡圈,他 李大爷用24米长的篱笆靠一面墙围成一个长方形,围成 已知椭圆的一个焦点与抛物线y²=8x的焦 高中数学 曲线题已知○M:(x-2)²+ 高中数学题(关于曲线)设曲线C:x^3-3x和直线 美国一客机收到炸弹威胁 现已紧急转降“岩浆行星”震惊科学家:它本不该存在日本万圣节:“僵尸”涌上街头占领东京美参院情报委拟法案缩减监听记录 被批亚洲最大气球盛会登陆日本 七彩气球装交通部:出租车行业改革 指导意见已出武汉企业要去美国? 可报名《赢在美跟着市场疯还是冷眼旁观?自古美人如名将男子高速路上毒驾追尾半挂车西游大世界零之崛起神奇宝贝元素混迹仙人大秦仙缘琶洲塔旅游云顶草原旅游将军寨旅游杏林湾旅游杭州湾湿地旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘