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

在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开发的技术热点内容!

Swift,任重而道远! DevOps系统的变迁 玩转Docker镜像 “扫描建模”速建AR应用 Vuforia 4.0 SDK更新 硅谷里的外星人:纵观Reddit十年风雨路 不见不散 Cloud Foundry Meetup活动将首次走进杭州 独立开发者:新手做2D手游该用哪些工具? 求安全化危机!Uber研发生物识别技术、聘请前亚马逊运营 JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多 去中心化、去中介化,微信商业化路径清晰了吗? 微信企业号认证简化了,你造吗? 专访瀚思安信联合创始人:大数据技术助力企业实现主动智能防御 挑选IBM Bluemix作为云平台的10大理由 10年技术积累成就极光压缩引擎,欧朋流量宝5.0面世 【图文实录】12月19日CTO俱乐部走进杭州 mlpack:可伸缩C++机器学习库 本地项目托管将死?类GitHub站点永存! 2014年讨论最多的编程语言:JavaScript称霸 移动Web应用UI框架大比拼:Ionic vs. Famo.us vs. F7 vs. OnsenUI 面包旅行CTO薛亮:做旅游与社交有机结合的先行者 盘点开发者最喜爱的Swift技巧 2017年,开发者还能从移动广告中收获什么? 《近匠》茄子快传,让设备更好地连接 面向移动应用程序的DevOps五大挑战和十个最佳实践 Ruby 2.2.0发布,支持回收Symbol类型对象 听UnitedStack、IBM、HP专家如何谈“OpenStack 存储”技术 专访POWER 8编程挑战赛选手孙冬冬:从C语言到人工智能、深度学习的技术演变 盘点2014:十家最酷的大数据创业公司 盘点2014:最受关注的十大云服务创业公司 基于Kubernetes构建Docker集群管理详解 漫画:编程语言学习曲线 如何做出象DELPHI中的菜单在ControlBar1中的样子? 急·!!怎样能把磁盘上的文件删出一行 有关多字段排序的问题? 什么是发布与订阅? 1、五一节快到了,大家打算怎么过啊?:P 我从网上Down下一个VB的事例,但是窗体上控件的位置没法移动??? 如何在访问不同域的COM+服务,如何配置? 求购CRM源码(delphi) 我写了一个exif读取的程序,欢迎大家热心测试,给出好的建议的赠送代码 2、五一散分帖,收集一些东东。 问个弱弱的问题! 帮忙了,谁有XP的序列号? 一个很菜的问题,求助!!! 超时已过期错误提示问题 河北保定,转让大量C++世界经典。 关于控件堆叠的问题 session的问题 今天发工资,太少不爽,大散分,谁要是能帮我找一个挣钱的私活,我给他200分(令给) 请教数据库! 请教有关对话框的问题? 3.五一散分帖,我一个朋友说。。。。。。。。 高分相求:JBUILDER8 Enterprise 版,或下载地址。 怎么才能获得editbox的值 请问rasWinGod 这个控件如何用!(在线等待) 请问如何用CB生成可以在集成到网页上的activeX控件?急阿........ 如何把用逗号隔开的字符串赋给一个数组? FileView下的External Dependencies里面的.h文件是什么?! 请问如何在数据窗口中显示记录序号 怎么看自动生成的Makefile到底做了什么?紧急总动员,满分,在线等待 回答我问题 今天打开邮箱,竟然没有lj邮件,感动ing,散分ing 4、五一散分帖,问问题。:) 单击一个TreeView发生一个事件!我想显示? informix小问题 求一个存储过程,sql server 2000 大家好,请高手赐教,有关在应用程序中如何打开并编辑Word 文档??急需 如何在文本文件中查找一个串 100分,如何安装sturts?解决马上送分 求急! JMAIL组件的收邮件附件的问题,请熟悉JMAIL使用的帮忙看看。 高手请指点..急呀..在线等... 请问怎样固定一个窗口的大小? 请问用正式版能不能修复已过期的sql server 试用版,让它重新启动起来? Asp.net怎麼執行存儲過程﹖是不是用存儲過程執行就不會出現臟數據﹖ ERWin是个什么东东? 键盘响应(F1) 怎么样把一个目录的权限完全给指定的user? 分布式数据处理问题-Sqlserver 开发人员请指点!! 判断数字问题 谁有刷新隐藏帧的例子? 我做的第一个网站,大家去看看,多提宝贵意见,谢谢! 邻居之间围墙高度有规定吗 对共青团的认识 水塔装两个浮球水下不来啊 为啥动物的嘴那么长 人的嘴那么短狗和鳄鱼这样长嘴巴的动物 我用两手把它们的嘴巴抓住 让它们张不开嘴 它们还能咬人吗 吃一斤鲨鱼肉等于吃掉了几斤普通鱼肉?鲨鱼每天都要依靠吃小鱼来长大,被鲨鱼吃掉的鱼肉,远远超过鲨鱼本身的重量.大白鲨长到四米长时,吃掉了比它自身几倍的食物? 在书法家的笔下,它们能生发出无穷无尽的变化,或挺拔如峰,或清亮如溪,或浩瀚如海,或凝滑如脂怎么仿写 宇宙有多大,有边缘吗宇宙有多大,有尽头吗,要是有,那么尽头外面是什么?为什么宇宙怎么虚无缥缈.另外问问大,小有没有界限? 照样子写词语,例:人如海 求富士宝电磁炉ih-p200电路图或告知电阻R50的阻值是多少富士宝电磁炉ih-p200 主板上电阻R50的阻值是多少?电阻烧坏了看不到色环了!望知道的朋友速速告知!fsb023-osc-m.pcb 080717-ljw 宇宙究竟有多大,它有边缘吗? how happy we are_____each other in washington!wo have hardly ever met in shanghaiseeingto seesaw seen 富士宝IH-P190B电磁灶散热器上温度检测电阻常温时阻值多大? 宇宙究竟有多大?宇宙的边缘在哪里?宇宙外又是什么样的洞天? Q1、Q2为两个被固定的正负电荷图所示,Q1、Q2为两个被固定的正负点电荷,在它们的连线的延长线上的a点,电场强度恰好为零,现把另一正电荷q从b点移到c点,该电荷的电势能将(  )(A)不断 谁能答出这道物理题真的是天才了一根长为L 的轻质细杆两端各固定一个可视为质点的小球A和B,两小球的质量均为m .轻杆可绕过其中心的水平轴在竖直平面内匀速转动.若直杆转动的周期为2派 白令海峡正中间那块岛,是霉国的还是鹅国的?感谢1楼的回答,但我指的是白令海峡最狭窄处正中间那块芝麻绿豆大的小岛? 明天大风降温是描述天气的吗?但是 还有个气候啊 昆明四季如春呢?是不是一天以内就是天气啊 2天以上就是气候? 若在A、B的连线上放一电荷q,恰能使q1,q2,q三个电荷都处于平衡状态,试确定q所带电荷量及所放的位置?无图 大拉杆是如何承受内压推力 在 钢铁是怎样炼成的 中 保尔因什么原因加入共青团?又应该怎样描写他的朋友们? 钢铁是怎样炼成的第一部中保尔认识了哪些人,保尔的形象是怎样的 Below the mountains ,the sunshine reflcts on the many lakes,-----them shine like diamonds--therich countrysideA.make ,inB.to make ,onC,making ,in D.making,against选什么? 请问各位兵圣裔胄们,孙氏乐安堂中的“乐”字的读音. 用一电阻接在电路上,15分钟后加热一物品.用同一电源在另一电阻加热用10分钟.如果两电阻串联接在同一电源上,要用多少时间加热同一物体 压铆螺母的扭力推力 多少卡路裏等于1斤脂肪如题 多少卡等于1脂肪?人一天最低消耗多少卡?(不动的情况下)一个苹果25卡 一天吃8个 等于600卡.那么要多少时间才减50斤回答清楚 我加分(我每天都要做很多劳动 浩瀚如海的意思 活塞为什么要设立主推力面和次推力面? 保尔.柯察金一生中最重要的三个女人是谁? "只有虚怀若谷,才能吞云吐雾,只有浩瀚如海,才能不择江河"这句话是什么意思?我大概了解了一点点,但我想具体了解下... promise I always by my sun like the sunshine we and see allright 某住宅的平面结构如图所示(墙体厚度不计,单位:米)(1)该住宅的面积是多少?(2)该房的主人计划把卧室以外的地面都铺上地砖,如果他选用的地砖价格是30元每平方米,那么买地砖至少 我没有立堂口,但我会说上方语.自己说的什么还不知道,管不住自己的嘴这是为什么 反推力是什么意思 请教机械传动的效率,最好说明单级齿轮传动和多级齿轮传动的效率 妈妈说我 失去了自我 把自己给丢了 说我把自己给丢了 自暴自弃 我什么都丢了 把自己都给丢了 我什么都没有了 难道我以前那么的坚持那么的执着就曾有过么 我还是没有 只是一直在挣扎 carry out,pick out,look out,work out的区别 为什么肾小球滤下的物质中会有蛋白质,蛋白质不会消化成氨基酸后被吸收了吗? 无口受是什么意思啊? carry out 和work out区别 液力变矩器坏了有什么现象 一个关于糖酵解的问题据总结,从葡萄糖算起,共生成4个ATP,分别在生成6-磷酸葡萄糖和1,6-二磷酸果糖时各消耗一个ATP,所以净生成2个ATP.我的疑问是:在生成1,3-二磷酸甘油酸时没有消耗ATP吗?如 work on 与carry on的区别? 液力变矩器效率90%机械效率只有45%不知道对不对那位大侠能告诉我啊谢谢 妈妈说,有些事情真的不要说得那么明白,不然就没意义,但是不说明白会失去很多? carry on your work这句话对吗,错的话错在哪?the answer is carry on with your work 在机械传动中传动效率最高的是? 仿照苍山如海写词语 过点M(3,-4)且在两坐标轴上的截距互为相反数的直线方程为 选择泵,助磨剂泵,助磨剂弱酸性.作用加压,流量小,输送距离长.管道口径小,32的ppr管不要计量泵.提供型号与参数 大嘴巴的新专辑《王元口力口》是什么意思? 我的爱像尘埃散落在边疆地带不再对谁期待而许诺像尘埃不断被时间掩埋是甚么歌拜托了各位 水泵比水池高1米,水平距离约30米,用一寸的管道,自吸喷射泵加引水/长时间的抽,怎么也抽不上水;把泵换回另一根原来能上水的管道,也抽不上来了.是否长时间不上水空转把泵给抽坏了?1米高/ 大嘴巴的新专辑《王元口力口》是啥子意思? 邻里围墙问题我们是在农村,我们家和邻居家之间有一条路(我们家西边,他们家东边),当初他们家打围墙的时候把路给打进去了,并出具了证明的协议.现在我们家打围墙,为了让父亲的车能开 楼顶有储水池,全自动管道自吸增压泵与无塔供水器的区别 大嘴巴的新专辑(王元 怎么读?. 关于农村邻里间的围墙高度有什么规定吗?我家要造围墙,可我邻居不让我造高,他说挡住了他的采光了,请问农村邻里间的围墙高度有什么规定吗? 我对共青团的认识越少越好,一定要少!多了就要骂娘了啊~ 根据提拔如峰、清亮如溪、浩瀚如海仿写全文是:真的,它们可不是僵硬的符号,而是有着独特性格的精灵.你看吧,每个字都有不同的风韵.“太阳”这个词,使你感触到热和力,而“月亮”却又闪 上海交大新技术 裸眼3D有望进入家庭掘金比特币:从虚拟走进现实 上演\"58同城纽交所成功上市 分类信息第一中国高层释楼市调控信号 长效机制或加中国水土流失面积占国土面积30.7%“最牛违建”预计年底前拆完 拆除后将长沙4航班遭“诈弹”威胁 威胁电话系中国载人空间站名叫天宫 核心舱命名为财政部:压缩各地公共财政预算结余结转社保缴纳新规今实施 员工入职30天内日本民主党报出现印刷错误出洋相 党员日本防相:警戒中国舰机无问题 不理解巴基斯坦总理会晤英首相 称与塔利班和中国100大最佳市政府出炉 浙江9个新书称奥巴马难招架前总统克林顿 怕长2013年日本人气商品排行 半泽直树日本防相:警戒中国舰机无问题 不理解联合国首次主动攻击非洲叛军 或抛弃被日本严防文物流向海外 追查76件文物日媒披露日本或早已成为美情报机构窃听日本政府逾2成地震复兴预算未用 被指广之旅迎35周年司庆 掀起全城优惠旋抢鲜一下郑惟桐赵鑫鑫争冠澳门氹仔弹丸之地不寂寞韩国最火的五款短发,保证你看过就会爱人民币能否“入篮”今日揭晓上一篇番禺大型驾考场拟明年建成面对“巴黎恐袭”应对“气候恐怖”测一测你的发型和哪款帽子最配!广州扑克牌拖拉机赛收牌“企业国情调研基地”落户勐海雨林古茶杜言因严重违纪被开除党籍明日提示国际足球今晨战报服装标价仅为商场的四分之一还有利润是新闻专业主义的缺席卫计委要求调查南航急救事件杨国强与学子分享“没穿过袜子”的岁月今天还有要生孩子的吗?日本十案之九·光市母女被杀案
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘