美文网首页
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 方法总结

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