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的使用和区别的主要内容,如果未能解决你的问题,请参考以下文章
iOS 开发 property,strong,weak,retain,assign,copy,nomatic 的区别及使用
strong ,weak,copy关键字使用,及weak跟assign区别
iOS中assign,copy,retain之间的区别以及weak和strong的区别(面试)