美文网首页
Objective-C NS对象 copy 方法总结

Objective-C NS对象 copy 方法总结

作者: 微笑惊世骇俗 | 来源:发表于2018-06-19 15:40 被阅读0次

1. copy 返回的是不可变对象(immutableObject),即便原消息接收者是mutable对象,copy返回的也将是不可变对象(immutableObject)。

2. mutableCopy 返回的是可变对象(mutableObject)

例1:

NSString* string =[NSString stringWithString:@"This is Copy Demo."];

NSString* str1 = string;    // 地址与string相同

NSString* str2 = [string copy];  // 地址与string相同,并没有真正开辟新的内存空间,与强引用相同

NSString* str3 = [string mutableCopy]; // 地址与string不同,开辟新的内存空间存储字符串,返回类型是MutableString

例2:

        CopyTest* testObj = [CopyTestnew];

        NSMutableString* mstrTest = [NSMutableString stringWithString:@"Test Mutable String"];

        NSArray* array =@[@"String",@{@"Key":@"Value"},@(3), mstrTest];

        NSMutableArray* mutableArray = [NSMutableArrayarrayWithArray:array];

        testObj.marrInstanceCopy    = mutableArray;

        // 因为属性定义为(nonatomic, copy)所以会自动copy,但返回值是不可变对象所以这里进行改变对象值的操作(addObject:)会崩溃。(指针所指向对象的类型是__NSArrayI)

        [testObj.marrInstanceCopy addObject:@"Add Object"];

相关文章

  • Objective-C NS对象 copy 方法总结

    1.copy 返回的是不可变对象(immutableObject),即便原消息接收者是mutable对象,copy...

  • copy or strong

    MRC下重写setter和getter方法 代码如下: copy和setter的选择 总结: 对于不可变对象(NS...

  • copy和mutableCopy 你晕了吗

    总结: copy 方法出来的对象都是不可变 mutableCopy 出来的都是可变对象 可变对象的copy都是深拷...

  • Copy和MutableCopy

    一、从面向对象到Objective-C概览copy 面向对象: 在面向对象的程序设计中,对象的copy就是创建一个...

  • copy和mutableCopy

    区分copy和mutableCopy之前,先区分容器对象和非容器对象,很好理解容器对象类似有:NSArray,NS...

  • Copy & MutableCopy

    copy&mutableCopy介绍   copy和mutableCopy,深浅拷贝,在OC里面是两个协议方法NS...

  • iOS中的Copy

    copy的概念特点 copy产生一个新副本的过程,利用一个原对象产生一个新对象copy:创建一个不可变的副本(NS...

  • Objective-C copy, weak,strong

    一、从面向对象到Objective-C概览copy 1、面向对象: In object-oriented prog...

  • Objective-C copy,看我就够了

    一、从面向对象到Objective-C概览copy 1、面向对象: In object-oriented prog...

  • 浅拷贝&深拷贝|| MutableCopy& C

    浅拷贝(Shallow Copy)与深拷贝(Deep Copy) 在Objective-C中并不是所有的对象都支持...

网友评论

      本文标题:Objective-C NS对象 copy 方法总结

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