美文网首页
7.可变集合类 和 不可变集合类的 copy 和 mutable

7.可变集合类 和 不可变集合类的 copy 和 mutable

作者: 豆丶浆油条 | 来源:发表于2017-09-06 15:45 被阅读183次

整个《面试题》都是对[2017年6月iOS招人心得(附面试题)]的整理

1.可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?

2030896-5b744f044027a0c1.png

2.如果集合是内容复制的话,集合里面的元素也是内容复制么?

不是,是单层深拷贝。
  集合的深复制有两种方法。可以用initWithArray:copyItems:将第二个参数设置为YES即可深复制

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

如果你用这种方法深复制,集合里的每个对象都会收到copyWithZone:消息。如果集合里的对象遵循NSCopying协议,那么对象就会被深复制到新的集合。如果对象没有遵循NSCopying协议,而尝试用这种方法进行深复制,会在运行时出错。copyWithZone:这种拷贝方式只能够提供一层内存拷贝(one-level-deepcopy),而非真正的深复制。

第二个方法是将集合进行归档(archive),然后解档(unarchive),如:

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

相关文章

  • 7.可变集合类 和 不可变集合类的 copy 和 mutable

    整个《面试题》都是对[2017年6月iOS招人心得(附面试题)]的整理 1.可变集合类 和 不可变集合类的 cop...

  • iOS 面试宝典

    tip1.可变集合类 和 不可变集合类的 copy 和 mutablecopy 有什么区别? 对于可变与不可变对象...

  • scala学习笔记-容器

    可变和不可变(Scala默认不可变集合类) val和var mutable和immutable 补充string是...

  • 可变集合类和不可变集合类的copy和mutablecopy有什么

    //可变集合类和不可变集合类的copy和mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素...

  • Scala 简单集合

    集合被分为两种:可变和不可变的集合(mutable and immutable collections)不可变集合...

  • scala-collection

    Scala的集合类可以从三个维度进行切分: 可变与不可变集合(Immutable and mutable coll...

  • 14. 集合类

    1. Kotlin的集合类 Kotlin的集合类分为可变集合类和不可变集合类 2. 常用的三种集合类 主要有三种:...

  • 集合库-collection

    scala同时支持不可变集合和可变集合,因为不可变集合可以安全的并发访问,所以他也是默认使用的集合库类。在scal...

  • NSString 的 strong 和 copy

    修改值 结论 定义NSString时候,strong,copy大部分情况效果一直,但在可变集合赋值给父类非可变集合...

  • Kotlin集合——Set集合

    Kotlin的集合类由两个接口派生:Collection和Map。 Kotlin的集合分为两大类:可变集合和不可变...

网友评论

      本文标题:7.可变集合类 和 不可变集合类的 copy 和 mutable

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