我想创建一个具有相同值的对象的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];
这是有效的,因为你可以使用C99创建运行时长度确定的C数组,Xcode默认使用它.
如果它们都是相同的值,你也可以使用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];