swift Objective-C NSCache.m和基础NSCache有什么区别?

h7wcgrx3  于 2023-03-07  发布在  Swift
关注(0)|答案(1)|浏览(89)

Objective-C NSCache.m和基础NSCache有什么区别?当我在Swift中使用NSCache时,它使用的是基础的NSCache还是Objective-C的NSCache

如果你在Swift中“跳到定义”NSCache,那么Xcode会显示以下文件,它导入<Foundation/NSObject.h>,所以我认为它使用的是Foundation的NSCache,但代码也是ObjC,所以我很困惑。

k97glaaz

k97glaaz1#

iOS和其他苹果平台使用封闭源代码的苹果版基金会,这不是你提供的两个链接。
第一个链接是swift-corelibs-foundation,它是在Swift中为非苹果平台(特别是Linux)重新实现的Foundation的大部分内容,目前还没有在任何苹果平台上使用,但主要由苹果沿着社区贡献者管理。
你的第二个链接来自GNUStep,它是可可的一个开源重新实现,苹果没有参与其中。完整的项目是OpenStep API的一个实现,由NeXT开发。这是一个有趣的项目,但与苹果生态系统没有真实的的交叉。它的日期早于苹果收购,更接近NeXTSTEP而不是iOS。
您的屏幕截图是正确的版本:Foundation的Objective-C专有版本。该版本的源代码不可用,只有头文件。如果你的目标是看到NSCache在iOS上的实际实现,那么它是不可用的。你能做的最好的事情是用Hopper之类的东西对其进行反向工程。(即使这样,通常最容易的方法是对macOS版本进行反向工程,并假设iOS版本是相同的。)
swift-corelibs-foundation中的版本旨在具有与Apple版本非常相似的行为,因此这是确定行为应该是什么的一个相当好的方法,但实现通常完全不同,并且可能在所有极端情况下的行为都不相同。

相关问题