objective-c – 创建一个使用count N初始化的NSArray,所有相同的对象

我想使用相同值的对象创建一个NSArray(比如说NSNumber全部被初始化为1),但是这个数是基于另一个变量的.除了处理C风格数组之外,NSArray的任何开发者似乎都没有办法做到这一点.

任何想法,如果有一个很短的方法来做到这一点?

这是我正在寻找的:

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];

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...