iOS中copy有两种copy和mutableCopy
1.copy
对于不可变对象的copy采用的是浅复制,引用计数加1(其实这是编译器进行了优化,既然原来的对象不可变,复制之后的对象也不可变那么就没有必要在重新创建一个对象了);对于可变对象copy采用的是复制,引用计数不变(原来的对象是可变的,现在要产生一个不可变的当然得重新产生一个对象)
2.mutablecopy:
无论是可变对象还是不可变对象采用的都是深复制,引用计数不变(如果从一个不可变对象产生一个可变的对象自然不用说两个对象绝对不一样肯定是深复制;如果从一个可变对象产生出另外一个可变对象,那么其中一个对象改变自然不希望另外一个对象也改变,当然是深复制)
3.可变对象
当值发生改变,那么地址也随之发生改变;
4.不可变对象
当值发生了改变,内容地址不发生变化;
5.引用计数
用于计算一个对象有几个指针在引用(有几个指针变量指向同一个内存地址)
网友评论