【OC易错】误以为NSMutableDictionary对象添加键值对的方法为addObject:forKeys
2015-05-31 13:30
519 查看
1、使用copy创建可变副本后无法添加键值对
1> 在使用NSDictionary对象的深复制后,得到可变副本,却不能使用不可变对象的addObject:forKey:方法。代码如下:[code] NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"Jack",@"name",@"beijing",@"address", nil]; NSMutableDictionary *mutableDict1 = [dict1 mutableCopy]; //以下方法是错误的 [mutableDict1 addObject:@20 forKey:@"age"];
2> 因此我断定,NSDictionary对象使用mutableCopy方法在ARC环境下得到的对象是不可变副本。
3> 上网搜资料后,突然发现setObject:forKey:方法,我这才想起来以前总结的内容——NSMutableDictionary添加对象的方法没有和NSArray/NSSet一样的addObject/addObjectArray方法,只有setObject:forKey:方法。
4> 将刚刚创建的副本调用setObject:forKey:方法后,竟然能顺利执行。可见我基础知识掌握得多么不牢固。
2、经验教训
1> 以后真得多复习以前的知识,真的太容易忘记了。2> 一定要多敲代码,练多了就自然记住了,孰能生巧。
相关文章推荐
- Object-C 代理 和 协议
- Objective-C 部分
- [Objective-C]__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用
- 关于 java JSONArray JSONObject转换问题
- Objective-C语法之NSArray和NSMutableArray
- [Objective-C]多态的方式--重写、重载
- Object-c:Property Attributes && Variable life time Qualifiers
- [Objective-C] 封装、继承和多态
- [Objective-C] id、self、super
- Object-C中内存引用计数
- Javascript Object.defineProperty()
- 飞机大战-GameObject精灵父类的实现
- Object-c 控制语句
- object-c 基本数据类型
- python遇到AttributeError: 'str' object has no attribute '_getAssertEqualityFunc'问题解决过程
- OC视频笔记3.1(Foundation框架,NSObject里面的方法)3.2(isKindOfClass和isMemberOfClass)
- object references an unsaved transient instance - save the transient instance before flushing
- error LNK2019: 无法解析的外部符号 __imp_GetUserObjectInformationW,该符号在函数 OPENSSL_isservice 中被引用
- Android开发: JSONObject的数据解析
- [Objective-C] 类、对象和方法