如果语句导致iOS设备崩溃,但模拟器中没有

时间:2014-02-27 21:19:54

标签: ios iphone objective-c if-statement ios-simulator

因此,此代码可以正常运行,而不会在iOS模拟器中造成任何崩溃。但是,在我的iOS设备(我的iPhone)上,这会导致崩溃!谁有人猜到为什么?日志在任何地方都没有帮助。

NSInteger loops = 1;
char character = '.';
if ([futureTr rangeOfString:[NSString stringWithFormat:@"%c",character]].location != NSNotFound) {
    NSArray *dotsArray = [futureTr componentsSeparatedByString:[NSString stringWithFormat:@"%c",character]];
    loops = [dotsArray count];
    if ([[dotsArray objectAtIndex:loops-1] isEqualToString:@""] || [dotsArray objectAtIndex:loops-1] == nil) {
        loops--;
    }
}

我知道这是导致麻烦的声明,因为我发表评论并且应用程序运行正常!可以发生什么?

1 个答案:

答案 0 :(得分:1)

根据评论中的讨论,问题是futureTr在某个时刻被释放,然后此代码尝试使用现在解除分配的指针,从而导致“BAD_ACCESS”异常。

对此变量进行适当的内存管理可以缓解这个问题。