copy和assign的使用和区别

Posted 小爷的爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了copy和assign的使用和区别相关的知识,希望对你有一定的参考价值。

1、使用copy和assign都可以进行修饰属性或者变量。

2、区别:

     (1)copy的使用:使用这个进行修饰的属性,当已经进行初始化之后,就无法再改变属性的数据。

       如:

@property (copy , nonatomic) NSString *firstName;//是Person类的一个属性

在main文件中:

         Person *person = [[Person alloc] init];

        NSMutableString string = @"steven";

         person.firstName = string;

       nslog(@"%@",person.firstName);  //1

     string = @"another name";

    nslog(@"%@",person.firstName);    //2

   2和1显示的字符串是相同的。。

 

但是如果是这样修饰属性@property (assign , nonatomic) NSString *firstName;//是Person类的一个属性

   2和1显示的字符串是不相同的,1显示的是steven , 2显示的是another name。

 

注意:如果你真想直接修改copy修饰的属性,你可以这样

- (id)initWithSomeOriginalString:(NSString *)aString {
    self = [super init];
    if (self) {
        _instanceVariableForCopyProperty = [aString copy];
    }
    return self;
}

 

以上是关于copy和assign的使用和区别的主要内容,如果未能解决你的问题,请参考以下文章

retain, copy, assign区别

iOS 开发 property,strong,weak,retain,assign,copy,nomatic 的区别及使用

strong ,weak,copy关键字使用,及weak跟assign区别

iOS中assign,copy,retain之间的区别以及weak和strong的区别(面试)

atomic与nonatomic,assign,copy与retain的定义和区别

ios OC 关键字 copy,strong,weak,assign的区别