首页 > 学院 > 开发设计 > 正文

Copy与MutableCopy的区别

2019-11-14 18:42:01
字体:
来源:转载
供稿:网友
NSString *string = @"origion";NSString *stringCopy = [string copy];NSMutableString *stringMCopy = [string mutableCopy];[stringMCopy appendString:@"!!"];

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

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

2. copy指的是浅复制,只是复制指针。

3. 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)。所以会崩溃


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表