1.NSDictionary
NSDictionary是key->value的映射。
NSDictionary中存储的object位置是由key来索引的。
由于object存储在特定位置,NSDictionary要求key的值不能变,为了保证这一点NSDictionary会copy值到自己的私有空间。
NSDictionary只接受oc对象作为key,key必须实现NSCopying协议。
key应当是小且高效的,复制的时候不应对内存或cpu形成压力。
综上,NSDictionary适合的key是值类型的,不适合作为模型类对象到对象的映射。
NSNumber *num = @(1);
NSDictionary *dic = @{num : [Person sharedInstance]};
num = @(2);
id obj = [dic objectForKey:num];
id obj1 = [dic objectForKey:@(1)];
(lldb) po obj
nil
(lldb) po obj1
<Person: 0x600002c735f0>
网友评论