[英]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.