ios - 为什么在 iOS 10 中添加 "__NSSingleXXXI"私有(private)类

标签 ios objective-c runtime ios10

新增了三个私有(private)类是iOS 10

  • __NSSingleObjectArrayI
  • __NSSingleObjectSetI
  • __NSSingleEntryDictionaryI

当容器初始化为单个对象时,容器集群将使用这三个新类。

在 iOS 9 中,也添加了“__NSArray0”和“__NSDictionary0”。

我不知道为什么要添加这些特殊的私有(private)类(class)。谁能告诉我为什么?

最佳答案

这很可能只是一种优化。例如,__NSSingleObjectSetI 不需要为实际的哈希表操心,因为只有一个对象需要担心。像 containsObject: 这样的方法不需要遍历任何东西或查找任何东西,它可以简单地将参数与集合/数组/字典表示的单个对象进行比较。

类似地,__NSArray0(假设它用于空数组)可以有类似arrayByAddingObjectsFromArray: 的方法,只需将copy 发送到参数并返回它。一个小的优化,但仍然是一个优化。

当然你不应该直接使用这些类(因为它们是私有(private)的,并且是一个实现细节),框架会自动使用这些类。由于它一个实现细节,我不能确定这些私有(private)类的真正目的,我只是猜测。

关于ios - 为什么在 iOS 10 中添加 "__NSSingleXXXI"私有(private)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39953234/

相关文章:

ios - MagicalRecord 创建不会保存新的数据对象。

ios - 滚动时获取 UICollectionView 的第一个单元格/项目 - iOS

iphone - 使用 NSUserDefaults 保存游戏设置/状态的优点?

ios - 以编程方式将 UIImageView 添加到 UIScrollView

runtime - 在运行时生成 BPEL 的框架?

iphone - 我可以观看另一个类(class)的 NSNotification 吗?

ios - 即使具有 1000 内容压缩阻力,UIScrollView 中嵌套 View 中的 UILabel 在自动布局下也会被压缩

iphone - 在 iPhone 应用程序中关闭拼写检查器

c++ - C/C++ : How to check if an array is static or dynamic during runtime

java - Android - 打开跟踪文件时出错 : No such file or directory