Objective c EXC_使用阵列时访问错误
我在使用数组(非ARC代码)时总是出错 我的代码:Objective c EXC_使用阵列时访问错误,objective-c,nsarray,exc-bad-access,Objective C,Nsarray,Exc Bad Access,我在使用数组(非ARC代码)时总是出错 我的代码: @implementation InfoController NSMutableArray *lbCityArray; NSMutableArray *lbTimeArray; NSMutableArray *lbCameInArray; NSMutableArray *lbCameOutArray; NSMutableArray *lbInArray; NSMutableArray *lbOutArray; 在我看来,我做了些什么 - (
@implementation InfoController
NSMutableArray *lbCityArray;
NSMutableArray *lbTimeArray;
NSMutableArray *lbCameInArray;
NSMutableArray *lbCameOutArray;
NSMutableArray *lbInArray;
NSMutableArray *lbOutArray;
在我看来,我做了些什么
- (void)viewDidLoad
{
[super viewDidLoad];
lbCityArray = [[NSMutableArray alloc] initWithCapacity:1];
lbTimeArray = [[NSMutableArray alloc] initWithCapacity:1];
lbCameInArray = [[NSMutableArray alloc] initWithCapacity:1];
lbCameOutArray = [[NSMutableArray alloc] initWithCapacity:1];
lbInArray = [[NSMutableArray alloc] initWithCapacity:1];
lbOutArray = [[NSMutableArray alloc] initWithCapacity:1];
//—add some values to arrays
NSString *City = @"London";
[lbCityArray addObject:City];
//—————————————-----------------------//
}
而且每次我点击后退按钮时,应用程序都会崩溃,无法访问。若我评论添加值到数组所有工作,返回按钮不崩溃的应用程序。我了解到,如果您使用非ARC代码,则必须在dealloc中手动释放
我添加到dealoc
[_InfoTableView release];
[lbCityArray release];
[lbTimeArray release];
[lbCameInArray release];
[lbCameOutArray release];
[lbInArray release];
[lbOutArray release];
[super dealloc];
并且没有任何变化,应用程序仍然崩溃。问题出在哪里
解决方案-我移动到ARC,所有问题都消失了。谢谢。如果您将变量转换为实例变量而不是全局变量,这将非常有帮助 更改此项:
@implementation InfoController
NSMutableArray *lbCityArray;
NSMutableArray *lbTimeArray;
NSMutableArray *lbCameInArray;
NSMutableArray *lbCameOutArray;
NSMutableArray *lbInArray;
NSMutableArray *lbOutArray;
进入:
如果没有花括号,您实际上是在创建全局变量,而不是实例变量。您能显示崩溃日志吗?他不会在第0x198f0b2行上编写标准错误:movzwl 0xc(%edx),他会编写EXC_BAD_访问和一些地址。如果看不到更多代码,我无法确定您在做什么,但
\u InfoTableView
?您是否在xib文件中实例化了它?如果你这样做了,你为什么要发布它?伙计们,我使用wsdltoobjc和由这个工具生成的代码,而不是ARC(_InfoTableView,我在这个视图中使用,问题不在这个TableView中。我转到ARC,所有问题都消失了。谢谢。
@implementation InfoController {
NSMutableArray *lbCityArray;
NSMutableArray *lbTimeArray;
NSMutableArray *lbCameInArray;
NSMutableArray *lbCameOutArray;
NSMutableArray *lbInArray;
NSMutableArray *lbOutArray;
}