繁体   English   中英

如何在没有对象引用的情况下将Objective-C类实例变量传递给另一个类实例变量?

[英]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个对象: ab分别引用的ClassAClassB实例; a.classCArrayb.classCArray引用的NSMutableArray的单个实例; 以及由可变数组和变量cInClassAcInClassB引用的ClassC的单个实例。

如果要创建对象的copy ,请使用方法copy ;对于可变对象的可变副本,请使用mutableCopy

高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM