簡體   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