objective-c - 用数组替换数组

标签 objective-c cocoa cocoa-touch ipad nsmutablearray

我有 NSMutableArray,我想用另一个替换它,但如果我尝试这样做......

firstArray = secondArray;

...然后它似乎删除了整个firstArray,我收到此错误消息..

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)'

...界限应该是 (6) 而不是 (0)。

有没有正确的方法来替换数组?

PS:我已经检查了第二个数组,它运行良好。

最佳答案

如果您想让 firstArray 变量成为对第二个变量的引用,请执行以下操作:

[firstArray release];
firstArray = [secondArray retain];

如果您想让 firstArray 成为第二个的副本,请执行以下操作:

[firstArray release];
firstArray = [secondArray mutableCopy];

(在这两种情况下,release 都假定您分配了该数组或之前对其进行了retain-ed 或copy-ed。如果没有,您可以跳过该位。无论哪种方式,您都拥有新数组,并且必须在适当的时间释放它。)

如果您想用第二个数组的内容替换第一个数组的内容(这与获取副本没有太大区别,但涉及更少的对象销毁和创建),那么我认为您会拥有做这样的事情:

[firstArray removeAllObjects];
[firstArray addObjectsFromArray:secondArray];

关于objective-c - 用数组替换数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041453/

相关文章:

objective-c - #define 在 Swift 中是如何工作的?

objective-c - 如何在 AppleScript 中使用变量?

macos - Mac 应用程序名称

ios - FBSDKAppInviteDialog 不工作

ios - UITableView 在详细页面之前附加信息?

objective-c - moveItemAtPath。没有错误,但不工作

macos - XPC 在工作区中的两个 cocoa 应用程序之间,NSXPCConnection 立即失效

iphone - Objective-C中的类变量内存生命周期

ios - 为什么我的模态呈现(表单)navController 的 rootViewController 没有意识到它在模态呈现时的尺寸较小?

swift - UICollectionViewCell 仅在满足特定条件时显示