如果说retain只是一个指针copy 而 copy是一个指针和内容都copy的画。那如下例子怎么会不成立? 代码如下: @interface ViewController () @implementation ViewController – (void)viewDidLoad { |
|
5分 |
NSString和NSArray这些Foundation框架里的类型,如果对不是Mutable的String调用copy,等同于retain
|
10分 |
[string1 stringByAppendingString:@”xiaowang!!”];//改变内容,
其实没有改变内容:string1还是xiaoming. for example: NSString *errorTag = @”Error: “; |
5分 |
copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制,引用计数每次加一。始终返回一个不可变对象。
当我们copy的是一个不可变的对象时,它的作用相当于retain(cocoa做的内存优化) mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。当我们使用mutableCopy时,无论源对象是否可变,副本是可变的,并且实现了真正意义上的拷贝 |
被邀请来回答问题,可是看不懂啊真心,不好意思。 |