苹果拒绝我的应用程序崩溃iphone 5

时间:2013-04-04 08:32:14

标签: ios

我知道这个问题已被问过几次,但我正在寻找更一般的答案。 我开发了iOS 6的应用程序,我在模拟器(Retina 3.5和4英寸)以及iPhone 4设备上进行了测试。 它从未崩溃,但当我将应用程序提交给Apple时,他们回答:

  

我们发现您的应用在运行iOS 6.1.3的iPhone 5上发布时崩溃,

查看崩溃日志enter image description here

我们看到它在第164行从索引超出边界崩溃,这是有道理的,因为我在那里有这个代码:enter image description here

我添加了“if”,以便在indexTimesArray大于数组长度时停止执行并查看原因,但我无法重现错误。我从来没有得到index out of bounds ...... 确实,我没有在iPhone 5设备上进行测试,但我的计算机上有XCode 4.6和iOS 6.1,还有iOS 6.1.3的iPhone 4,但苹果公司的人员也是如此。应用程序崩溃,那么如何重现错误? 我尝试从TestFlight安装该应用,因为它将其安装为一个全新的应用,就像他们测试时一样,但仍然没有错误......

如何重现错误?这可能是构建设置的问题吗?

由于

[编辑] 我在对象的init方法中初始化timesArray的内容,如下所示:

- (id)init{    
self = [super init];    
df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm"];
rangeDates = [[NSArray alloc]initWithObjects:@"2013-04-11 10:00", @"2013-04-12 10:00", @"2013-04-13 10:00", @"2013-04-14 10:00", nil];    
timesArray = [[NSArray alloc]initWithArray:[NSArray arrayWithObjects:@"10:00", @"11:00", @"12:00", @"13:00", @"14:00", @"15:00", @"16:00", @"17:00", @"18:00", @"19:00", @"20:00", @"21:00", @"22:00", nil]];    
colorDictio = [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:[UIColor colorWithRed:0.74 green:0.66 blue:0.37 alpha:1.0], [UIColor colorWithRed:0.64 green:0.15 blue:0.11 alpha:1.0], [UIColor colorWithRed:0.313 green:0.65 blue:0.69 alpha:1.0], [UIColor colorWithRed:0.79 green:0.4 blue:0.59 alpha:1.0], [UIColor colorWithRed:0.45 green:0.55 blue:0.53 alpha:1.0], [UIColor colorWithRed:0.14 green:0.27 blue:0.66 alpha:1.0], nil] forKeys:[NSArray arrayWithObjects:@"showers area", @"zinctalks", @"zincnetwork", @"zincshows", @"zinclabs", @"zinczone", nil] ];
return self;
}

3 个答案:

答案 0 :(得分:1)

要弄清楚如何重现该错误,您必须查看创建timesArray的代码。

由于[timesArray count]小于2(或整个数组为nil),因此发生了越界错误。因此,您必须弄清楚哪个条件会导致具有一个或零个对象的数组。也许是因为没有互联网连接。

在检查数组的实际大小时,最好包装objectAtIndex:

我会将else {替换为else if ([timesArray count] >= 2) {并添加另外一个处理< 2阵列的其他内容。

答案 1 :(得分:0)

首先,这不是与操作系统相关的错误。您的应用程序崩溃了,因为正在访问错误的数组索引。

  1. 如何重现错误? :尝试使用必须为apple提供的相同凭据。
  2. 这可能是构建设置的问题吗? :没有。
  3. 要调试错误,您可以尝试在if之前打印indexTimesArray的值。此外,尝试打印要传递的所有值以访问数组元素。这将帮助您跟踪正在发送的错误索引。

答案 2 :(得分:0)

感谢@mayur,他的评论是正确的答案,&#34;我之前在Objective-C中遇到类似的错误...我的建议是使用自己的NSMutableArrays或NSArrays&#34; < / p>