为什么在 iOS 10 中添加“__NSSingleXXXI” private class

Why add "__NSSingleXXXI" private class in iOS 10

新增加了三个私有class是iOS10

当container init with single object时,container的cluster会使用这三个new class.

在iOS9中,'__NSArray0'和'__NSDictionary0'也添加了。

我不知道添加这些特殊私有的原因class。谁能告诉我为什么?

这很可能只是一个优化。例如,__NSSingleObjectSetI 不需要考虑实际的散列 table,因为只有一个对象需要担心。像 containsObject: 这样的方法不需要遍历任何东西或查找任何东西,它可以简单地将参数与 set/array/dictionary 代表的单个对象进行比较。

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

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