为什么在 iOS 10 中添加“__NSSingleXXXI” private class
Why add "__NSSingleXXXI" private class in iOS 10
新增加了三个私有class是iOS10
- __NSSingleObjectArrayI
- __NSSingleObjectSetI
- __NSSingleEntryDictionaryI
当container init with single object时,container的cluster会使用这三个new class.
在iOS9中,'__NSArray0'和'__NSDictionary0'也添加了。
我不知道添加这些特殊私有的原因class。谁能告诉我为什么?
这很可能只是一个优化。例如,__NSSingleObjectSetI
不需要考虑实际的散列 table,因为只有一个对象需要担心。像 containsObject:
这样的方法不需要遍历任何东西或查找任何东西,它可以简单地将参数与 set/array/dictionary 代表的单个对象进行比较。
类似地,__NSArray0
(假设它用于空数组)可以有类似 arrayByAddingObjectsFromArray:
的方法,只需将 copy
发送到参数并 return 它。一个小的优化,但仍然是一个优化。
你当然不应该直接使用这些 类(因为它们是私有的,并且是一个实现细节),框架将自动使用这些 类。由于它 是 一个实现细节,我不能确定这些私有 类 的真正目的,我只是猜测。
新增加了三个私有class是iOS10
- __NSSingleObjectArrayI
- __NSSingleObjectSetI
- __NSSingleEntryDictionaryI
当container init with single object时,container的cluster会使用这三个new class.
在iOS9中,'__NSArray0'和'__NSDictionary0'也添加了。
我不知道添加这些特殊私有的原因class。谁能告诉我为什么?
这很可能只是一个优化。例如,__NSSingleObjectSetI
不需要考虑实际的散列 table,因为只有一个对象需要担心。像 containsObject:
这样的方法不需要遍历任何东西或查找任何东西,它可以简单地将参数与 set/array/dictionary 代表的单个对象进行比较。
类似地,__NSArray0
(假设它用于空数组)可以有类似 arrayByAddingObjectsFromArray:
的方法,只需将 copy
发送到参数并 return 它。一个小的优化,但仍然是一个优化。
你当然不应该直接使用这些 类(因为它们是私有的,并且是一个实现细节),框架将自动使用这些 类。由于它 是 一个实现细节,我不能确定这些私有 类 的真正目的,我只是猜测。