iOS面试iOS面试

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

2019-08-07  本文已影响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 面试题以及答案总结!

上一篇下一篇

猜你喜欢

热点阅读