[英]How to pass Objective-C class instance variable to another class instance variable without object reference?
我有A,B和C三班。
@interface ClassA
@property (nonatomic,strong) NSMutableArray *classCArray;
@end
@implementation ClassA
...
@end
@interface ClassB
@property (nonatomic,strong) NSMutableArray *classCArray;
@end
@implementation ClassB
...
@end
@interface ClassC
@property (nonatomic,strong) NSString *name;
@end
@implementation ClassC
...
@end
然后,我创建类A的实例“ a”,设置“ a”变量classCArray,并将a.classArray传递给“ b”(ClassB的实例)。
ClassA *a = [ClassA alloc] init];
ClassC *cInClassA = [ClassC alloc] init];
cInClassA.name = @"jack";
[a.classCArray addObject:c];
ClassB *b = [ClassB alloc] init];
b.classCArray = a.classCArray;
ClassC *cInClassB = b.classCArray[0];
cInClassB.name = @"Bob";
在上面的代码之后,cInClassA.name更改了。(eauqls“ Bob”)我不希望发生这种情况。 我该怎么办?
您似乎以为分配复制对象,但不是。 一个变量,比如你的a
,永远只能存储一个对象,并赋值拷贝引用的参考 。
您的代码创建4个对象: a
和b
分别引用的ClassA
和ClassB
实例; 由a.classCArray
和b.classCArray
引用的NSMutableArray
的单个实例; 以及由可变数组和变量cInClassA
和cInClassB
引用的ClassC
的单个实例。
如果要创建对象的copy
,请使用方法copy
;对于可变对象的可变副本,请使用mutableCopy
。
高温超导
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.