【问题标题】:nsdictionary copy vs mutable copy字典副本与可变副本
【发布时间】:2012-04-22 17:35:38
【问题描述】:

我有

NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
id dict = [myDictionary copy];

但是dict 现在只是普通的NSDictionary 吗?还是NSMutableDictionary的副本?

另外,有没有办法从可变变为不可变?

【问题讨论】:

    标签: cocoa copy nsdictionary nsmutabledictionary


    【解决方案1】:

    这里涉及到两种方法; -copy-mutableCopy

    如果班级有区别; -copy 总是创建一个不可变的副本; -mutableCopy 总是创建一个可变副本。

    如果类没有区别; -copy 总是创建一个真实的副本。

    所以是的,dict 现在是一个 NSDictionary,包含字典中的对象。

    【讨论】:

    • 小更正:copy 不会创建深拷贝,因此复制字典中的对象将与原始字典中的对象相同,而不是副本。
    • @omz:如果字典的内容采用NSCopying,这是否也适用?
    • 是的,您必须明确使用 initWithDictionary:copyItems: 来创建深层副本。
    • @Cultor:我觉得这个词的意思从我的回答中应该很清楚了。
    • @Williham Totland:嗨,其实我是初学者,所以没看懂。
    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2012-03-31
    • 2021-01-20
    相关资源
    最近更新 更多