gpt4 book ai didi

objective-c - EXC_BAD_ACESS 错误

转载 作者:行者123 更新时间:2023-11-28 19:22:26 24 4
gpt4 key购买 nike

我在以下行收到错误 EXC_BAD_ACESS:

NSString *titleVarName = [[NSString alloc] initWithFormat:@"%@%@",@"occasionTitle",i];

这里是上面代码行所在的for循环:

for (i=0; i < count; ++i) 
{

//Save the occasionS details to NSUserDefaults

NSString *titleVarName = [[NSString alloc] initWithFormat:@"%@%@",@"occasionTitle",i];

NSString *dateVarName = [[NSString alloc] initWithFormat:@"%@%@",@"occasionDate",i];

NSString *imageVarName = [[NSString alloc] initWithFormat:@"%@%@",@"occasionImage",i];


[[NSUserDefaults standardUserDefaults] setValue:[[[self displayedObjects] objectAtIndex:i]
title] forKey:titleVarName];

[[NSUserDefaults standardUserDefaults] setValue:[[[self displayedObjects] objectAtIndex:i]
date] forKey:dateVarName];

[[NSUserDefaults standardUserDefaults] setValue:[[[self displayedObjects] objectAtIndex:i]
imagePath] forKey:imageVarName];

//release

[titleVarName release];
[dateVarName release];
[imageVarName release];


[self dismissModalViewControllerAnimated:YES];
}

分配对象并在 for 循环中释放它们不是可以的吗?

最佳答案

您需要使用 %d%i 说明符而不是 %@ 来指定整数。如果 %@ 与 int 一起使用,那么它将尝试访问 int 指定地址处的对象。例如,如果 i 的值为 1,则它试图访问地址 1 的对象,这将导致错误访问。

NSString *titleVarName = [[NSString alloc] initWithFormat:@"%@%d",@"occasionTitle",i];

而且你在这里不需要 allocrelease,尽管这不是访问错误的原因。您可以使用方便的构造函数。

NSString *titleVarName = [NSString stringWithFormat:@"occasionTitle%d", i];
// release not required

dateVarNameimageVarName 也做同样的事情。

关于objective-c - EXC_BAD_ACESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574124/

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