gpt4 book ai didi

objective-c - 创建一个用计数 N 初始化的 NSArray,都是同一个对象

转载 作者:太空狗 更新时间:2023-10-30 03:27:54 24 4
gpt4 key购买 nike

我想创建一个具有相同值对象的 NSArray(假设 NSNumber 全部初始化为 1),但计数基于另一个变量。似乎没有办法用 NSArray 的任何初始化器执行此操作,除了处理 C 样式数组的初始化器。

知道是否有捷径可以做到这一点?

这就是我要找的:

NSArray *array = [[NSArray alloc] initWithObject:[NSNumber numberWithInt:0]
count:anIntVariable];

NSNumber 只是这里的一个示例,它实际上可以是任何 NSObject。

最佳答案

我为此编写的最紧凑的代码是:

id numbers[n];
for (int x = 0; x < n; ++x)
numbers[x] = [NSNumber numberWithInt:0];
id array = [NSArray arrayWithObjects:numbers count:n];

之所以可行,是因为您可以使用 Xcode 默认使用的 C99 创建运行时长度确定的 C 数组。

如果它们都是相同的值,您也可以使用 memset(尽管强制转换为 int 很麻烦):

id numbers[n];
memset(numbers, (int)[NSNumber numberWithInt:0], n);
id array = [NSArray arrayWithObjects:numbers count:n];

如果您知道需要多少个对象,那么这段代码应该可以工作,尽管我还没有测试过:

id array = [NSArray arrayWithObjects:(id[5]){[NSNumber numberWithInt:0]} count:5];

关于objective-c - 创建一个用计数 N 初始化的 NSArray,都是同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1071648/

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