我有一个不可变的数组,它只需要有数字。我该如何初始化它呢?
我现在就像下面这样,但我想一定有更好的方法。我们可以像在C++中那样做吗?像这样的int list[5] = {1,2,3,4,5};会对应用程序产生影响吗?
myArray = [[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];另外,如果我需要一个只有数字的数组数组,这看起来会是什么样子?我刚接触obj-c,在网上看了看,我看到了相互矛盾的答案。
发布于 2012-02-25 10:43:36
如果它是不可变的并且只包含数字,那么直接使用C数组就可以了。在Objective-C中使用C数组没有错,在您的例子中,NSArray只是不需要的开销。
发布于 2012-02-25 10:30:05
还没有,但很快就会:
http://blog.ablepear.com/2012/02/something-wonderful-new-objective-c.html
更新:新的语法是:
@[ @(20), @(10) ]@[]创建一个数组,@(number)创建一个可以放入数组的NSNumber。
发布于 2012-02-25 10:51:06
您可以向NSArray添加一个类别:
@implementation NSArray ( ArrayWithInts )
+(NSArray*)arrayWithInts:(const int[])ints count:(size_t)count
{
assert( count > 0 && count < 100 ) ; // just in case
NSNumber * numbers[ count ] ;
for( int index=0; index < count; ++index )
{
numbers[ index ] = [ NSNumber numberWithInt:ints[ index ]] ;
}
return [ NSArray arrayWithObjects:numbers count:count ] ;
}
@endcountof()看起来像这样:
#define countof(x) (sizeof(x)/sizeof(x[0]))像这样使用:
const int numbers[] = { 20, 10, 5, 2, 1, 0 } ;
NSArray * array = [ NSArray arrayWithInts:numbers count:countof(numbers) ] ) ;或者你可以使用@CRD上面的建议...
https://stackoverflow.com/questions/9440604
复制相似问题