美文网首页iOS面试iOS面试
iOS 内存管理面试题(是否了解 深拷贝 和 浅拷贝 的概念,集

iOS 内存管理面试题(是否了解 深拷贝 和 浅拷贝 的概念,集

作者: 程序员_秃头怪 | 来源:发表于2019-08-07 15:32 被阅读12次
    简而言之:

    1、对不可变的非集合对象,copy是指针拷贝,mutablecopy是内容拷贝

    2、对于可变的非集合对象,copy,mutablecopy都是内容拷贝

    3、对不可变的数组、字典、集合等集合类对象,copy是指针拷贝,mutablecopy是内容拷贝

    4、对于可变的数组、字典、集合等集合类对象,copy,mutablecopy都是内容拷贝

    但是,对于集合对象的内容复制仅仅是对对象本身,但是对象的里面的元素还是指针复制。要想复制整个集合对象,就要用集合深复制的方法,有两种:

    (1)使用initWithArray:copyItems:方法,将第二个参数设置为YES即可

    NSDictionary shallowCopyDict = [[NSDictionary alloc] initWithDictionary:someDictionary copyItems:YES];
    

    (2)将集合对象进行归档(archive)然后解归档(unarchive):

    NSArray *trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:oldArray]];
    

    热文推荐

    2019 全网 iOS 面试题以及答案总结!

    相关文章

      网友评论

        本文标题:iOS 内存管理面试题(是否了解 深拷贝 和 浅拷贝 的概念,集

        本文链接:https://www.haomeiwen.com/subject/ptoodctx.html