新增了三个私有(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/