在objective-c中声明NSInteger数组的最佳方法

时间:2014-01-20 08:03:18

标签: ios objective-c

在头文件中我想声明一个NSInteger数组,最好的方法是什么? 我尝试使用此代码,但会导致错误

@interface test:NSObject
{
}
@property(nonatomic,readwrite)NSInteger f[4]={1,2,3,4}; // Error!!!
@end

3 个答案:

答案 0 :(得分:4)

你不能这样做;而是在对象的init方法中初始化数组并提供自定义的setter / getter:

部首:

@interface test:NSObject
{
    NSInteger _f[4];
}
@property(nonatomic,readwrite) NSInteger *f;
@end

实现:

@implementation test

- (id)init {
    self = [super init];
    if (self) {
        _f[0] = 1;
        _f[1] = 2;
        _f[2] = 3;
        _f[3] = 4;
    }
    return self;
}

- (NSInteger *)f {
    return _f;
}

- (void)setF:(NSInteger *)f {
    for (NSUInteger i = 0; i < 4; i++)
        _f[i] = f[i];
}

@end

答案 1 :(得分:2)

您确定需要一组NSIntegers吗? NSIntegers是一种原始类型;它们不是物体。对于大多数用例,Objective-C中的通常约定是存储NSNrray的NSNumber对象。可以通过在@符号前添加前缀来将文字编号转换为NSNumber。

在标题中:

@property(nonatomic, strong) NSArray *myArray;

使用init方法或类似方法:

self.myArray = @[ @1, @2, @3, @4 ];

答案 2 :(得分:0)

int array [100]; 将其创建为全局变量。

在你的.m文件中添加,

@interface MyClass ()

@end

@implementation MyClass{
}
int a[] ={1,2,34};

- (无效)INIT {,.....

尝试NSLog(@“%d”,[1]),它将完美打印。