gpt4 book ai didi

ios - NSArray 的副本不符合我的预期

转载 作者:可可西里 更新时间:2023-11-01 06:19:11 24 4
gpt4 key购买 nike

我有一个 NSMutableArray,我正在将其传递给 tableViewController。用户将访问和更新数组中的数据。添加对象和移除对象。

为了能够在用户与数组交互之前恢复到数组的状态,我想我应该制作一个数组的副本。这样,如果用户决定取消而不继续,我可以将 copyArray 传递回原始数组。

但是,当我更新原始数组上的一些数据时,它也会在副本数组上更新。

不,我没有将它们分配给彼此。我使用了以下代码。

array2 = [array1 copy];

我什至尝试过长篇大论的。

NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];

但如果我将 copyItems 设置为 YES,应用程序会因此错误而崩溃。

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SaleItem copyWithZone:]: unrecognized selector sent to instance 0xa21f3b0'

最佳答案

您应该查看数组的深拷贝和浅拷贝之间的区别。简而言之,您只需要数据结构的副本,还是还需要数组中项目的副本? (原件和副本应该指向同一个对象吗?)

要解决此错误:

  • Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SaleItem copyWithZone:]: unrecognized selector sent to instance 0xa21f3b0'

您还需要implement NSCopying在您的 SaleItem 类中。

关于ios - NSArray 的副本不符合我的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com