美文网首页
怎么用copy关键字

怎么用copy关键字

作者: FRAJ | 来源:发表于2019-05-13 14:22 被阅读0次

1. NSString、NSArray、NSDictionary 等经常使用 copy 关键字;

因为父类指针可以指向子类对象,使用 copy 的目的是为了让本对象的属性不受外界影响,使用 copy 无论给我传入的是一个可变对象还是不可变对象,我本身持有的就是一个不可变的副本,如果我们使用的是 strong,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性。

2. 为什么 block 也经常使用 copy 关键字

block 使用copy关键字是从 MRC 遗留下来的“传统”,在 MRC 中,方法内部的 block 是在栈区的,使用 copy 可以把它放到堆区。
在 ARC 中写不写都行,对于 block 使用 copy 还是 strong 效果是一样的,但写上 copy 也无伤大雅,还是能时刻提醒我们,编译器自动对 block 进行了 copy 操作。

注意

NSMutableString、NSMutableArray、NSMutableDictionary 使用 copy 应注意:

  1. 添加、删除、修改数组内的元素的时候,程序会因为找不到对应的方法而奔溃,因为 copy 就是复制一个不可变 NSArray 的对象。
  2. 使用了atomic 属性会严重影响性能。

在非集合类对象中:

  • 对 immutable 对象进行 copy 操作,是指针的复制,mutableCopy 操作是内容复制;
  • 对 mutable 对象进行 copymutableCopy 都是内容的复制;
[immutableObject copy];           //浅复制
[immutableObject mutableCopy];    //深复制
[mutableObject copy];             //深复制
[mutableObject mutableCopy];      //深复制

相关文章

  • OC基础知识

    @property 修饰符什么情况使用 weak 关键字,相比 assign 有什么不同?怎么用 copy 关键字...

  • 面试题

    1.怎么用 copy 关键字? 用途:NSString、NSArray、NSDictionary 等等经常使用co...

  • 怎么用 copy 关键字?

    对于字符串和block的属性一般使用copy 字符串使用copy是为了防止外部把字符串内容改了,影响该属性 blo...

  • 怎么用 copy 关键字?

    用途: NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的...

  • 怎么用 copy 关键字?

    用途:NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的可...

  • 怎么用 copy 关键字?

    copy 的语义是将对象拷贝一份给新的引用,通过新的引用对它的修改不影响原来那个被拷贝的对象。 NSString、...

  • 怎么用copy关键字

    1. NSString、NSArray、NSDictionary 等经常使用 copy 关键字; 因为父类指针可以...

  • 问题[○○○]:怎么用 copy 关键字?

    NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的可变类型...

  • 问题:怎么用 copy 关键字?

    NSString、NSArray、NSDictionary等等经常使用copy关键字,是因为他们有对应的可变类型:...

  • 《招一个靠谱的iOS》

    题目: 风格纠错题风格纠错题 什么情况使用 weak 关键字,相比 assign 有什么不同? 怎么用 copy ...

网友评论

      本文标题:怎么用copy关键字

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