Xcode 升级到iOS 4.2后,Iphone应用程序不会运行

Xcode 升级到iOS 4.2后,Iphone应用程序不会运行,xcode,ios4,Xcode,Ios4,安装Xcode 3.2.5 iOS 4.2后,一个运行正常的应用程序停止运行。我看到其他人也发生过这种情况,但我不知道如何解决它 我的问题是: 1.我怎么知道它在哪里坠毁? 2.我可以做些什么来更好地调试和查明问题 这是调用堆栈 汤米谢谢你的回答。我已经构建并运行了它,并提出了建议,但当它崩溃时,它并没有显示崩溃的位置。我还在方法中添加了一个断点,但它不会停在那里。还有其他想法吗?下面是代码片段 - (NSInteger)numberOfSectionsInTableView:(UITable

安装Xcode 3.2.5 iOS 4.2后,一个运行正常的应用程序停止运行。我看到其他人也发生过这种情况,但我不知道如何解决它

我的问题是: 1.我怎么知道它在哪里坠毁? 2.我可以做些什么来更好地调试和查明问题

这是调用堆栈

汤米谢谢你的回答。我已经构建并运行了它,并提出了建议,但当它崩溃时,它并没有显示崩溃的位置。我还在方法中添加了一个断点,但它不会停在那里。还有其他想法吗?下面是代码片段

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
ApplicationData *appdata = [ApplicationData sharedInstance];
if(appdata.currentCategoryIndex >= 0) {
    Category *category = [appdata.categoryList objectAtIndex:appdata.currentCategoryIndex];
    if(category.records) {
        [lab_norecords setHidden:YES];
    } else {
        [lab_norecords setHidden:NO];
        return 0;
    }
    return [category.records count];
}
return 0;
}

现在我得到了这个错误:

我认为问题的根源在同一子类别视图中:

- (id)init {
if([[NSBundle mainBundle] loadNibNamed:@"SubCategoryView" owner:self options:nil]) {
    //if(self = [super initWit])
    cellowner = [[TableCellOwner alloc] init];
    [listTableView setBackgroundColor:[UIColor clearColor]];
    [listTableView setSeparatorColor:[UIColor whiteColor]];
    [listTableView initialize];
}
return self;

}

从您得到的跟踪中,查看第二列。应用程序中最近的一件事是调用第四行(编号为“3”)中的子类别View numberOfSectionsInTableView:。触发的异常是NSRangeException,您试图从包含22个对象的数组中检索对象4294967295。4294967295是将有符号的32位数字转换为无符号数字时-1的外观,因此出于某种原因,您正在执行以下操作:

NSInteger variable = -1;
[array objectAtIndex:variable];
子类别视图的numberOfSectionsInTableView中的某个位置。最佳即时猜测:4.1和4.2之间的某些更改会导致您使用的任何填充表的方法产生错误的结果


要从这里开始,请确保您正在使用command+y进行调试构建和启动(或者转到上的构建、构建和运行-断点)。当您的程序这次崩溃时,应该会出现调试窗口,精确显示程序抛出异常的行,并允许您在该点检查所有程序变量的状态。调试器还允许您放置断点、一次一行地遍历程序以及所有其他常规操作。

从您得到的跟踪中,查看第二列。应用程序中最近的一件事是调用第四行(编号为“3”)中的子类别View numberOfSectionsInTableView:。触发的异常是NSRangeException,您试图从包含22个对象的数组中检索对象4294967295。4294967295是将有符号的32位数字转换为无符号数字时-1的外观,因此出于某种原因,您正在执行以下操作:

NSInteger variable = -1;
[array objectAtIndex:variable];
子类别视图的numberOfSectionsInTableView中的某个位置。最佳即时猜测:4.1和4.2之间的某些更改会导致您使用的任何填充表的方法产生错误的结果


要从这里开始,请确保您正在使用command+y进行调试构建和启动(或者转到上的构建、构建和运行-断点)。当您的程序这次崩溃时,应该会出现调试窗口,精确显示程序抛出异常的行,并允许您在该点检查所有程序变量的状态。调试器还允许您放置断点、一次一行地执行程序以及所有其他常规操作。

@Tommy我已经编辑了我的帖子,您可以看看是否可以提供进一步的帮助吗?我被卡住了,我看不出有什么问题;下一步是在方法的开始处设置一个断点并逐步执行。您可以通过在源代码编辑器视图的左侧空白处单击来在Xcode中设置断点。当您的程序在命令+y运行后崩溃时,Xcode应该做什么?在左上角的窗格中显示调试器视图和当前堆栈跟踪。查找代码中的第一项内容,然后单击它以查看代码中的行。然后使用右上角的区域检查状态。我在方法的开头设置了一个断点,但它并没有停在那里。它以前崩溃过。我所做的是从调试器构建和运行。请看图片。我能解决这个问题。我所做的主要是初始化为0,而不是-1。由于某些原因,在iOS 4.2的前一个版本中,它可以正常工作,但不再工作。还是不知道原因。这是个好消息,对不起,我帮不上忙了。我认为关于何时调用各种表委托方法的约定有点模糊。我的一个程序中有一个bug最终被发现了,因为在viewwill出现之前,在viewDidLoad之后,在viewDidLoad之前,您将无法得到一些东西。那是在4.2之前,所以几乎不相关。@Tommy我已经编辑了我的帖子,你能看看你是否能提供进一步的帮助吗?我被卡住了,我看不出有什么问题;下一步是在方法的开始处设置一个断点并逐步执行。您可以通过在源代码编辑器视图的左侧空白处单击来在Xcode中设置断点。当您的程序在命令+y运行后崩溃时,Xcode应该做什么?在左上角的窗格中显示调试器视图和当前堆栈跟踪。查找代码中的第一项内容,然后单击它以查看代码中的行。然后使用右上角的区域检查状态。我在方法的开头设置了一个断点,但它并没有停在那里。它以前崩溃过。我所做的是从调试器构建和运行。请看图片。我能解决这个问题。我所做的主要是初始化为0,而不是-1。由于某些原因,在iOS 4.2的前一个版本中,它可以正常工作,但不再工作。还是不知道原因。这是个好消息,对不起,我帮不上忙了。我认为关于何时调用各种表委托方法的约定有点模糊。我的一个程序中有一个bug最终被发现了,因为在viewwill出现之前,在viewDidLoad之后,在viewDidLoad之前,您将无法得到一些东西。但这是在4.2之前,所以几乎不相关。