美文网首页
copy 关键字的使用

copy 关键字的使用

作者: maniacRadish | 来源:发表于2016-06-02 17:01 被阅读415次
1> copy的使用场景

当多个指针指向同一个对象时,为避免一个指针对对象的改动对其他指针的使用产生影响,使用copy来创建对象的副本
如页面间传值使用copy,A向B控制器传属性(属性为自定义对象),为避免因A的属性变化对B的属性产生影响
再如多人开发或封装库,在不明确传入值为可变还是不可变的情况下,使用copy更安全

2> 什么是深拷贝浅拷贝

对于非容器类对象,不可变对象进行copy操作为浅拷贝,引用计数器加1,其他三种为深拷贝

对于容器类对象,基本和非容器类对象一致,但注意其深拷贝是对象本身是对象复制,其中元素仍为指针复制,系统将initWithArray方法归为了元素深拷贝,但其实如果元素为不可变元素,仍为指针复制,使用归解档可以实现真正的深拷贝,元素也是对象拷贝NSArray* trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:
[NSKeyedArchiver archivedDataWithRootObject: array]];

3> 字符串什么时候使用copy,strong

属性引用的对象由两种情况,可变和不可变字符串
引用对象不可变情况下,copy和strong一样,copy为浅拷贝
引用对象可变情况下,如果希望属性跟随引用对象变化,使用strong,希望不跟随变化使用copy

4> 字符串所在内存区域

@“abc” 常量区 stringwithformat 堆区
*5> mutablecopy和copy @property(copy) NSMutableArray arr;这样写有什么问题
mutablecopy返回可变对象,copy返回不可变对象
6> 如何让自定义类可以使用copy修饰符

实现<NSCopying>协议,重写copyWithZone方法

相关文章

  • iOS Copy 关键字

    如何使用copy关键字在定义NSString,NSArray等不可变类型,经常使用了copy关键字,这是因为他们存...

  • copy、assign、strong、weak、__block、

    1、copy: 1️⃣NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因...

  • 关于Block

    关键字 block一般使用copy关键字进行修饰,block使用copy是从MRC遗留下来的“传统”,在MRC中,...

  • Copy

    概述 用@property声明 NSString、NSArray、NSDictionary 经常使用copy关键字...

  • 面试题

    1、@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,...

  • copy & strong

    用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为...

  • NSString、NSArray、NSDictionary为什么

    @property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什...

  • 回顾日记1

    用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为...

  • NSString类型的property常用copy的原因

    copy关键字执行复制赋值。NSString使用copy可以防止对象的属性在其他地方被莫名的修改。

  • iOS开发怎么使用copy关键字

    1.iOS开发怎么使用copy关键字 原因:因为父类指针可以指向子类对象,使用copy的目的是为了让本对象的属性不...

网友评论

      本文标题:copy 关键字的使用

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