【发布时间】:2013-04-04 08:32:13
【问题描述】:
我知道这个问题已经被问过好几次了,但我正在寻找一个更一般的答案。 我为 iOS 6 开发了一个应用程序,我在模拟器(Retina 3.5 和 4 英寸)以及 iPhone 4 设备上对其进行了测试。 它从未崩溃过,但是当我将应用程序提交给 Apple 时,他们回答说:
我们发现您的应用在运行 iOS 6.1.3 的 iPhone 5 上启动时崩溃,
查看崩溃日志
我们看到它在第 164 行从索引越界崩溃,这是有道理的,因为我在那里有这段代码:
每当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; }
【问题讨论】:
-
我之前在 Objective-C 中遇到过类似的错误...我的建议是将 self 与 NSMutableArrays 或 NSArrays 一起使用。
-
你的意思是把数组声明为属性?
-
用属性
@property (nonatomic, retain) NSMutableArray* timesArray;声明你的数组 -
然后在
.m文件中,无论您在哪里使用该数组,都将其用作self. timesArray -
酷,我试过了,但在 Apple 批准或拒绝之前,我仍然不知道它是否成功。
标签: ios