zoukankan      html  css  js  c++  java
  • Copy 与MutableCopy的区别

    NSString *string = @"origion";
    NSString *stringCopy = [string copy];
    NSMutableString *stringMCopy = [string mutableCopy];
    [stringMCopy appendString:@"!!"];

    上面这段代码中,需要注意的点:

    1. retainCount对常量是无效的,数字会是个很大的数字。它对堆上的内存对象是正确的,对于栈上的常量无效。

    2. copy指的是浅复制,只是复制指针。(对可变的集合而言,copy是生成一个不可变对象。对不可变的集合而言,copy等于strong,其中的元素都是浅拷贝)

    3. mutableCopy是深复制,复制了对象到新的内存空间(对集合而言,mutableCopy是生成一个新的可变对象,其中的元素都是浅拷贝)

    4. mutableCopy出来的都是可变的(NSMutableString)

        NSMutableString *string = [NSMutableString stringWithString: @"origion"];
        NSMutableString *stringCopy = [string copy];
        [stringCopy appendString:@"!!"]; //ERROR
        NSMutableString *stringMCopy = [string mutableCopy];
        [stringMCopy appendString:@"!!"];

    上面这段代码中,需要注意的点:

    1. 无论copy的对象是Mutable的(NSMutableString)还是非Mutable的(NSString),copy出来的都是非Mutable的(NSString)。所以会崩溃

  • 相关阅读:
    大话设计模式--中介者模式
    大话设计模式--职责链模式
    大话设计模式--命令模式
    大话设计模式--桥接模式
    迷宫求解
    stuct、class、typedef
    软件测试
    Scrapy初探
    python练习
    链表基础
  • 原文地址:https://www.cnblogs.com/lihaiyin/p/4647426.html
Copyright © 2011-2022 走看看