gpt4 book ai didi

objective-c - 在 NSMutableArray 中使用 insertObject 时发生崩溃

转载 作者:行者123 更新时间:2023-12-03 17:40:42 27 4
gpt4 key购买 nike

我有一个NSMUtableArray我想在不同的索引和不同的方法中插入一些数据。所以我初始化我的 NSMutableArray在我的viewDidLoad像这样:

- (void)viewDidLoad
{
[super viewDidLoad];

params=[[NSMutableArray alloc]init];
params =[NSMutableArray arrayWithCapacity:20];
for (int i = 0; i<20; i++) {

[params addObject:[NSNull null]];
}

}

并以不同的方法,我尝试替换 null按实际值(value)计算:

-(void)doInBackGround{

NSString * domaine=@"Toto";
int port =8080;

[params replaceObjectAtIndex:8 withObject:domaine];

[params replaceObjectAtIndex:9 withObject:[NSString stringWithFormat:@"%d",nbPort]];

}

我尝试替换 NSMutableArray 中的值的另一种方法“参数”

-(void)someMethod{

NSString * computer=@"Ajax";
int port =3333;

[params replaceObjectAtIndex:4 withObject:computer];

[params replaceObjectAtIndex:5 withObject:[NSString stringWithFormat:@"%d",nbPort]];

}

但是我在尝试替换对象时发生了崩溃:

[params replaceObjectAtIndex:8 withObject:domaine];

我该如何修复它?我认为我的问题是我初始化 NSMUtableArray 的位置?你觉得怎么样?

最佳答案

首先,您初始化了 params 两次,第一次完全是多余的,因为您永远不会对空数组执行任何操作。

您的第二次初始化,使用arrayWithCapacity:返回一个自动释放对象,因此当您尝试替换其中的对象时,它可能已被释放。

熟悉一些内存管理基础知识并使用数组的保留属性。您可能还想改用 ARC(自动引用计数),这样就不太可能出现此类错误(尽管了解内存管理仍然很有帮助)。

关于objective-c - 在 NSMutableArray 中使用 insertObject 时发生崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208771/

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