iPhone:如何制作整数数组并在Obj-C中存储值?
我想知道一件简单的事情,我无法得到,我想在一个整数数组中动态存储10个值,然后我必须检查存储的值,并与当前值进行比较,在其他条件下是否相同。起初我尝试了与C数组相同的int-temp[10],但似乎无法设置和获取方法,然后我尝试了如下NSNumber 在AppDelagate文件中iPhone:如何制作整数数组并在Obj-C中存储值?,iphone,objective-c,Iphone,Objective C,我想知道一件简单的事情,我无法得到,我想在一个整数数组中动态存储10个值,然后我必须检查存储的值,并与当前值进行比较,在其他条件下是否相同。起初我尝试了与C数组相同的int-temp[10],但似乎无法设置和获取方法,然后我尝试了如下NSNumber 在AppDelagate文件中 NSMutableArray *reqID; @property (nonatomic,readwrite) NSMutableArray * reqID; @synthesize reqID; ...
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;
}
}
for(int i=0;i首先,您应该这样声明属性:
@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);
正如埃米尔指出的
myDelegate.reqID = [NSMutableArray arrayWithCapacity:10];
它不会给您一个包含10个插槽的数组,而是给您一个空数组,并向运行时提示您最终将在其中放入10个对象。因此,如果在添加10个对象之前从0到9运行E循环,您将得到一个NSRangeException,因为您将从数组末尾运行。我按照您的建议修改了所有内容ested。但我在读取mutablearray变量时遇到崩溃,如下所示。我在AppDelegate文件DidFinishLaunching中添加了myDelegate.reqID=[NSMutableArray WithCapacity:10];在另一个文件中,我尝试访问它,如下所示:for(int i=0;iSmall correction,在我之前的注释中。我添加了“prevquesid=”[NSMutableArray arrayWithCapacity:10];“在AppDelegate文件DidFinishLaunching中,与我前面的评论不同。崩溃时得到的消息是什么?是否有可能是EXC_BAD_访问错误?[myDelegate.prevquesid objectAtIndex:i]将崩溃,因为数组为空且在i=0时没有任何内容(进入for循环时的i值)您好,我已通过使用NSNumber填充数组值解决了此问题。对于使用0的ex initialize:prevquesid=[[NSMutableArray alloc]initWithCapacity:10];对于(int I=0;I