iPhone:如何在Obj-C中创建整数数组并存储值?

时间:2010-06-06 18:39:27

标签: iphone objective-c

我想知道一个简单的事情,我无法得到它是我想动态存储整数数组中的10个值然后我必须检查存储的值并与当前值进行比较是否相同或者在某些其他条件下。最初我尝试过类似C数组,int temp [10],但似乎是不可能设置和获取方法,然后我尝试NSNumber如下,

在AppDelagate文件中,

    NSMutableArray *reqID;
@property (nonatomic,readwrite) 
NSMutableArray * reqID;

@synthesize reqID;

........................

........................

........................

在其他一些文件中,

int rd = (1+arc4random() % [arr count]);

[myDelegate.reqID addObject:[NSNumber numberWithUnsignedInteger:rd]];

然后我需要检查,

        for (int i=0; i<10; i++)
    {
        NSUInteger anInt = [[myDelegate.reqID objectAtIndex:i] unsignedIntegerValue];

        if ( anInt==rd )
        {
            rd = (1+arc4random() % [arr count]);
            break;
        }
    }

但它没有按预期工作,即数组值没有给出适当的值。我不知道如何在Obj-C中使用整数数组并处理它以便稍后访问等。

有人可以请我探索一下吗?

2 个答案:

答案 0 :(得分:0)

首先,你应该声明这样的属性:

@property (nonatomic,retain) NSMutableArray * reqID;

其次,您需要在某处实际创建一个NSMutableArray。例如:

myDelegate.reqID = [NSMutableArray arrayWithCapacity:10];

请注意,您必须使用myDelegate.reqID而不是reqID才能保留该对象。

(我个人会在这里使用普通的C数组......)

修改:完成后请记得[reqID release]

编辑2:以下是使用C数组执行此操作的方法:

在您的课程中,添加实例变量int *reqID。然后声明一个属性:

@property (nonatomic, assign) int *reqID;

然后为数组分配空间,执行:

myDelegate.reqID = malloc(10 * sizeof(int));

然后,要访问您的数组,您可以使用[]语法:

int a = myDelegate.reqID[i];

然后,当你完成后,执行:

free(myDelegate.reqID);

答案 1 :(得分:0)

除了埃米尔指出的东西,

myDelegate.reqID = [NSMutableArray arrayWithCapacity:10];

没有为你提供一个包含10个插槽的数组,它会为你提供一个空数组,其中包含一个运动时提示,你最终会在其中放入10个内容。所以,如果你在添加10个对象之前运行从0到9的循环,你将得到一个NSRangeException,因为你将运行数组的末尾。