前沿数码资讯:Objective-C引入了零运行时成本直接法
科技、数码、互联网新闻如今都成为了大众所关注的热点了,因为在我们的生活当中如今已经是处处与这些相关了,不论是手机也好,电脑也好,又或者是智能手表也好,与之都相关,那么今天小编也是为大家来推荐一篇关于互联网科技数码方向的文章,希望大家会喜欢哦。
Objective-C引入了零运行时成本直接法
自S wift于2014年推出以来,Objective-C只知道一些小的变化,主要是为了验证其与Swift的互操作性。然而,Objective-C并不是一种边缘语言,它最近增加了对“直接”方法的支持,这些方法看起来像普通的类方法,但表现得更像C函数。
虽然Swift作为构建iOS应用程序的首选语言吸引了最大的兴趣,但Objective-C仍然在开发人员中很受欢迎。事实上,如果真的是斯威夫特在2016年首次超过TIOBE指数中的Objective-C,那么截至2019年11月,Objective-C在TIOBE指数中已经攀升至第12位,斯威夫特排名第10位。有趣的是,这两种语言已经多次交换了他们的TIOBE排名。同样,Stack Overflow语言排名根据流行的问答论坛上提出的问题数量来衡量语言的采用程度,这突出了人们对Objective-C的兴趣下降。Stack Overflow数字可以通过Swift收集进入iOS开发领域的大多数新开发人员,以及过去几年对Objective-C的修改次数减少来具体解释。
尽管如此,Objective-C的新功能还是让很多人感到有些意外。简而言之,一个直接方法允许定义一些特殊类型的属性,这些属性不附带Objective-C元数据,其getter和setter方法几乎表现为直C函数。这个新特性的语法是Objective-C@property语法的直接扩展:
直接方法的使用通过objc_msgSend消除了与Objective-C运行时方法解析相关的一些开销..这使得使用这个新功能来优化一些关键路径变得有趣,就像PSPD FKit知名度的iOS开发人员彼得·斯坦伯格在Twitter上所说的那样。无论如何,并不是所有的开销都被删除,因为LLVM中的直接方法实现力求使其与标准的Object-C方法兼容。特别是,隐式self和_cmd参数都被保留,并进行了一些检查,以确保两者在调用方法时都是正常的。
开发人员如何使用直接方法有一些限制。首先,直接方法只能在内部、私有API上使用,不能被框架公开。此外,重载的方法不能是直接的,也不能是直接的方法,也不能重载直接的方法;实现不能重新声明它与直接的接口的非直接方法;所需的协议方法不能是直接的;最后,您不能发送不限定的id直接方法。
除了优化关键路径的可能性外,对这一新的客观-C特征的反应并不完全是积极的一面。iOS开发人员TannerB评论说,直接方法损害了许多基本的目标C特性,如KVC、KVO、方法闪烁等。第一天应用程序开发商BJ Homer表示,他担心苹果可能会使用直接方法来使调整更难完成:
objc_direct_member注释似乎有效地实现了Objc的真正私有方法。静态发送,不可覆盖。我可以看到苹果在内部大量使用这种方法来避免人们调用私有方法。
这一担忧在某种程度上被著名的iOS开发者和图书作者尼克·洛克伍德所忽视,因为直接方法只能是私人的:
这应该有助于减轻人们的担忧,即它将从根本上改变Objective-C的性质,方法是阻止像KVO这样的滑动和破坏功能。
苹果高级软件工程师皮埃尔·哈布齐特也证实了这一点。
最后,虽然直接方法已经合并为LLVM,但不太可能在明年WWDC之前在X code中提供这些方法。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
【哪些成语是描写草的】在汉语中,有许多成语用来形容草的状态、生长环境或与草相关的自然景象。这些成语不仅...浏览全文>>
-
【哪些成语是鸡开头的】在汉语中,以“鸡”字开头的成语虽然不多,但它们在日常生活中却有着独特的含义和使用...浏览全文>>
-
【哪些成语是含有反义词的】在汉语中,成语是一种高度凝练的语言表达形式,常常蕴含着丰富的文化内涵和语言智...浏览全文>>
-
【哪些成语是狗字开头】在汉语中,以“狗”字开头的成语虽然不多,但它们往往带有特定的语义色彩,有的带有贬...浏览全文>>
-
【哪些成语是发开头的】在汉语中,成语是经过长期使用、结构固定、意义完整的短语。很多成语以“发”字开头,...浏览全文>>
-
【哪些成语是带鼎字的】在汉语中,成语是语言文化的精华,承载着丰富的历史和文化内涵。其中,“鼎”作为古代...浏览全文>>
-
【哪些成语是大开头的】在汉语中,成语是人们日常交流和写作中常用的一种固定词组,具有丰富的文化内涵和语言...浏览全文>>
-
【哪个生肖不三不四】在中国传统文化中,十二生肖不仅代表了年份的循环,也承载着丰富的文化寓意和性格象征。...浏览全文>>
-
【哪个少数民族人口多】在中国,56个民族中,汉族是人口最多的民族,而其他55个民族则被统称为“少数民族”。...浏览全文>>
-
【哪个少女不多情】在青春的岁月里,情感是每个人都会经历的一部分。尤其是少女时期,正是情感最敏感、最丰富...浏览全文>>