当前位置:主页 > 要闻 >

Objective-C引入了零运行时成本直接法

时间:2021-02-07 22:49:20

  Objective-C引入了零运行时成本直接法

  自S wift于2014年推出以来,Objective-C只知道一些小的变化,主要是为了验证其与Swift的互操作性。然而,Objective-C并不是一种边缘语言,它最近增加了对“直接”方法的支持,这些方法看起来像普通的类方法,但表现得更像C函数。
 

  虽然Swift作为构建iOS应用程序的首选语言吸引了最大的兴趣,但Objective-C仍然在开发人员中很受欢迎。事实上,如果线年首次超过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中提供这些方法。

热点推荐
1 理财疯狂星期四:HYPETSLAX享555%年化

消息,Bybit理财疯狂星期四来袭,新用户可选择HYPE或TSLAX代币,享受高达555%年化收益率。活动...

2 伊拉克埃尔比勒以北一处伊朗库尔德反对

消息,据安全消息人士称,伊拉克埃尔比勒以北一处伊朗库尔德反对派组织营地遭无人机袭击...

3 Bitwise CIO:比特币最大买家时代已结束

消息,Bitwise首席投资官Matt Hougan表示,迈克尔塞勒的策略曾是比特币最主要的买家,但这些日...

4 公司因AI替代不足重新招聘员工

消息,随着人工智能替代员工的效果未达预期,许多公司开始逆转这一决策,重新招聘员工。...

5 俄罗斯国家杜马委员会建议通过加密货币

俄罗斯国家杜马国家建设和立法委员会建议一读通过政府提交的法案,拟对违反数字货币流通...

6 比特币价格预测:BTC测试5.8万至6.2万美元

比特币正在测试5.8万至6.2万美元的需求区间,交易者关注关键通道支撑位以寻找潜在的看涨反...

7 KakaoPay CEO:链上金融是全球金融市场核心

韩国移动支付与金融服务平台KakaoPay的CEO Shin Won-Keun在数字资产投资洞察论坛上表示,链上金融...

8 法国报告2026年发生77起加密货币绑架事件

消息,法政部长劳伦特纽内斯透露,自2026年初以来,法国已记录77起与数字资产相关的绑架、...

9 Sei Labs发布Giga白皮书v2,提升隐私与公平

消息,吴说获悉,Sei Labs发布Giga白皮书v2,新增隐私和公平性设计,将Giga的Autobahn共识协议最终...

10 f2pool创始人向Binance存入1.68万枚ETH和60枚

消息,据Onchain Lens监测,f2pool创始人Chun Wang向Binance存入1.6842万枚ETH和60枚WBTC。自5月26日以来,...

成都来彰科技 蜀ICP备2025134723号-1

资讯来源互联网,如有版权问题请联系管理员删除。