小爷的爷

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;
}

 

posted on 2016-07-01 12:45  小爷的爷  阅读(717)  评论(0编辑  收藏  举报