gpt4 book ai didi

objective-c - NSArray 和 NSMutableArray 的区别

转载 作者:行者123 更新时间:2023-12-02 05:39:12 25 4
gpt4 key购买 nike

您好,我正在使用基础工具处理 NSArrays,我编写了以下代码

    -(void)simplearrays
{
NSMutableArray *arr = [NSMutableArray arrayWithCapacity:3];

for(int i =0;i<3;i++)
{
scanf("%d",&arr[i]);
}
for(int j =0; j<3;j++)
{
printf("\n%d",arr[j]);
}
}

我的查询是上面的代码在执行时显示了给定的输出但是一旦应用程序完成执行我得到一个错误,提示“无法分配区域”你能帮忙吗。

我还想知道 icode 博客中 NSArray 和 NSMutable 数组的区别 我读过 nsarray 可以动态调整大小,所以如果 NSArray 可以动态调整大小那么为什么要使用 NSMutable 数组或者更好的是什么时候使用 NSArray 以及什么时候使用使用 NSMutable 数组???

最佳答案

Cocoa 数组不是 C 数组。它们是容器对象,与 Java 向量和数组列表有一些相似之处。

您不能使用 C 下标语法添加对象或检索它们,您需要向对象发送消息。

-(void)simplearrays
{
NSMutableArray *arr = [NSMutableArray array];
// arrayWithCapacity: just gives a hint as to how big the array might become. It always starts out as
// size 0.

for(int i =0;i<3;i++)
{
int input;
scanf("%d",&input);
[array addObject: [NSNumber numberWithInt: input]];
// You can't add primitive C types to an NSMutableArray. You need to box them
// with an Objective-C object
}
for(int j =0; j<3;j++)
{
printf("\n%d", [[arr objectAtIndex: j] intValue]);
// Similarly you need to unbox C types when you retrieve them
}
// An alternative to the above loop is to use fast enumeration. This will be
// faster because you effectively 'batch up' the accesses to the elements
for (NSNumber* aNumber in arr)
{
printf("\n%d", [aNumber intValue]);
}
}

关于objective-c - NSArray 和 NSMutableArray 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com