簡體   English   中英

如何在ARC中復制對象

[英]How to copy an object in ARC

現在它在ARC中沒有copy屬性,那么當我要復制對象時該怎么辦? 然后我寫一個測試代碼:

測試

@property (strong, nonatomic) NSMutableString *str1;
@property (strong, nonatomic) NSMutableString *str2;

測試

self.str1 = [[NSMutableString alloc] initWithString:@"Hello"];
self.str2 = [self.str1 copy];
[self.str2 appendString:@"World"];
NSLog(@"str1:%@,str2:%@",self.str1,self.str2);

當我跑步時,它崩潰了:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with appendString:'

那么,我該怎么辦?

copy應該始終返回對象的不可變副本,而mutableCopy (如果有)應始終返回可變對象,而不管接收者是可變對象還是不可變對象。 通過這種方式,你可以肯定,當你問一個copy是不變的,當你問一個mutableCopy是可變的。

這個概念已經存在了很多年,並且並不專門針對ARC。 ARC僅處理對象的內存管理,而不處理對象的可變性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM