为什么应用程序在iPhone模拟器中崩溃;我怎样才能解决这个问题?

时间:2010-11-07 21:47:21

标签: xcode ios crash ios-simulator viewdidload

我正在开发一款使用导航控制器的应用。当我建立时,我没有错误或警告。我在myMethod文件中定义了一个方法FirstViewController.m,然后在viewDidLoad中使用[self myMethod];调用该方法。

当我从控制台构建并运行时,我什么也没得到。所以我把NSLog()这样的陈述如下:

-(void) viewDidLoad {
NSLog(@"Entering viewDidLoad");
[self myMethod];
NSLog(@"Called myMethod");
[super viewDidLoad];
}

控制台永远不会返回第二个NSLog语句,这让我相信应用程序在调用方法时崩溃了。

我已经尝试将此模拟器设置为iOS 4.0.1以及iOS 4.1。我正在构建iOS 4.1 SDK。我非常感谢您提供的任何帮助。

更新:我运行了调试器,这似乎表明问题出现在myMethod中。在收到“EXC_BAD_ACCESS”之前,我只通过该方法中的几行代码。代码行是:

-(void)myMethod {
NSMutableArray *someStuff;
NSMutableArray *someMoreStuff;

stuffSections=[[NSMutableArray alloc] initWithObjects:@"Some Stuff",@"Some More Stuff",nil];

someStuff=[[NSMutableArray alloc] init];
someMoreStuff=[[NSMutableArray alloc] init];

[someStuff addObject:[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Item Name",@"name",@"Item Picture.png",@"picture",@"http://theurl.net/",@"url",@"1",@"itemCode",nil]];

但似乎我无法通过第一次尝试向someStuff数组添加内容。

3 个答案:

答案 0 :(得分:0)

看起来“myMethod”中存在问题。如果我不得不猜测,我会说你试图引用一个自动释放但不保留的对象。

答案 1 :(得分:0)

初始化someStuff和someMoreStuff时,你错过了alloc。它应该是

   someStuff = [[NSMutableArray alloc] init];
   someMoreStuff = [[NSMutableArray alloc] init];

答案 2 :(得分:0)

您是否已经检查了两个MutableArrays?它们是否已成功分配?当应用程序进入通常由于内存管理问题导致的损坏状态时,您会收到“ EXC_BAD_ACCESS ”。我猜数组没有分配。

尝试以这种方式分配。

NSMutableArray * someStuff = [[NSMutableArray alloc]initWithCapacity:3];
NSMutableArray * someMoreStuff = [[NSMutableArray alloc]initWithCapacity:3];

添加一个断点,检查调试区域并确认它们是否已成功分配。如果每个数组都有一个内存,那么它们就会被分配。