首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化numbers的NSArray

初始化numbers的NSArray
EN

Stack Overflow用户
提问于 2012-02-25 10:23:45
回答 3查看 14.4K关注 0票数 4

我有一个不可变的数组,它只需要有数字。我该如何初始化它呢?

我现在就像下面这样,但我想一定有更好的方法。我们可以像在C++中那样做吗?像这样的int list[5] = {1,2,3,4,5};会对应用程序产生影响吗?

代码语言:javascript
复制
myArray = [[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];

另外,如果我需要一个只有数字的数组数组,这看起来会是什么样子?我刚接触obj-c,在网上看了看,我看到了相互矛盾的答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-25 10:43:36

如果它是不可变的并且只包含数字,那么直接使用C数组就可以了。在Objective-C中使用C数组没有错,在您的例子中,NSArray只是不需要的开销。

票数 5
EN

Stack Overflow用户

发布于 2012-02-25 10:30:05

还没有,但很快就会:

http://blog.ablepear.com/2012/02/something-wonderful-new-objective-c.html

更新:新的语法是:

代码语言:javascript
复制
@[ @(20), @(10) ]

@[]创建一个数组,@(number)创建一个可以放入数组的NSNumber。

票数 8
EN

Stack Overflow用户

发布于 2012-02-25 10:51:06

您可以向NSArray添加一个类别:

代码语言:javascript
复制
@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 ] ;
}
@end

countof()看起来像这样:

代码语言:javascript
复制
#define countof(x) (sizeof(x)/sizeof(x[0]))

像这样使用:

代码语言:javascript
复制
const int numbers[] = { 20, 10, 5, 2, 1, 0 } ;  
NSArray * array = [ NSArray arrayWithInts:numbers count:countof(numbers) ] ) ;

或者你可以使用@CRD上面的建议...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9440604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档