copy和mutableCopy

2016-11-21  本文已影响5人  七里田间的守望者
    //对象为可变字符串时
    NSMutableString * string = [NSMutableString string];
    [string appendString:@"1"];
    [string appendString:@"2"];

    //深拷贝
    NSString * str1 = [string copy];//开辟新的内存 产生不可变对象类型
    //深拷贝
    NSMutableString * str2 = [string mutableCopy];//开辟新的内存 产生可变对象类型

    //对象为不可变字符串时
    NSString * string = @"sb";
    //浅拷贝
    NSString * str1 = [string copy];//指针指向原来的内存地址 没有新开辟内存空间
    //深拷贝
    NSMutableString * str2 = [string mutableCopy];//开辟新的内存 为可变类型

实现拷贝的语法

以此类推NSArray和NSMutaleArray也是一样的原理

注意:此方法只针对系统的copy如果是自定义的对象要NSCopying要遵守协议
并实现下面方法





- (id)copyWithZone:(NSZone *)zone
{
    Person * p = [[Person allocWithZone:zone ]init ];
    
    //在这里可以赋值
    p.age = self.age;
    
    return p ;
}

@property中的copy

当赋值对象为可变字符串时
为strong时 外面穿什么值 里面就赋什么值 当赋值对象为可变的时候值会随着外面的值变化而变化
为copy时对象是不可变的 当赋值对象为可变的时候里面的对象是不会随着外面的值变化而变得

总结:


Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读