#import <Foundation/Foundation.h>
/*
Copy Properties Maintain Their Own Copies
*/
@interface Person: NSObject
@property NSString *firstName;
@property NSString *lastName;
@end
/* 如下的赋值,由于firstName是一个不可变的,但是赋值后,如果mutableString修改了,
firstName的值也会发生变化,这样与最初的定义不符合。 */
NSMutableString *mutableString = [NSMutableString stringWithString:@"Jhon"];
person.firstName = mutableString
/* 为了解决这个问题,可以使用copy修饰符号 */
@interface Person: NSObject
@property (copy) NSString *firstName;
@property (copy) NSString *lastName;
@end
/* 这样定义以后,用mutableString给firstName赋值的时候,会拷贝一分新的对象给firstName
这样,以后mutableString的任何变化都不会影响到firstName,因为赋值给firstName时
是拷贝一个新的对象,所以不能使用weak,否则就赋值不成功的。 */
本文深入探讨了Objective-C与Swift中对象拷贝与引用的机制,解释了为何在某些场景下使用拷贝可以避免意外的数据共享问题,并提供了实例演示。
1399

被折叠的 条评论
为什么被折叠?



