Мой iPhone симулятор падает каждый раз, когда я запускаю его - PullRequest
0 голосов
/ 22 августа 2009

Приложение будет работать нормально, а затем вылетать - буквально через раз. Похоже, сбой очищает память, а чистый запуск повреждает память.

Я предполагаю, что это связано с распределением памяти, но я не уверен.

alt text

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *MyIdentifier = @"MyStateCell";
static NSString *MyNib = @"StateCell";

StateCell *cell = (StateCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil) {
    UIViewController *c = [[UIViewController alloc] initWithNibName:MyNib bundle:nil];
    cell = (StateCell *)c.view;

    [c autorelease];
}

// Configure the cell.
NSString *cellAnswerName = [[NSString alloc] initWithFormat:@""];
cellAnswerName = [theQuizArray objectAtIndex:indexPath.row];
int theStatusCode = [[theResultArray objectAtIndex:indexPath.row] intValue];

NSString *statusString;
NSString *pointsWon;

if(theStatusCode == 0){
    statusString = [NSString stringWithFormat:@""];
    pointsWon = [NSString stringWithFormat:@""];
}else if( theStatusCode == 12){
    statusString = [NSString stringWithFormat:@"Wrong"];
    pointsWon = [NSString stringWithFormat:@"0"];
}else if(theStatusCode == 11){
    statusString = [NSString stringWithFormat:@"Out of time"];
    pointsWon = [NSString stringWithFormat:@"0"];
}else{
    int elapsedTime = 10 - theStatusCode;
    int pointsWonInt = 10 * theStatusCode;
    pointsWon = [NSString stringWithFormat:@"%i", pointsWonInt];
    if(elapsedTime == 1){
        statusString = [NSString stringWithFormat:@"%i second", elapsedTime];
    }else{
        statusString = [NSString stringWithFormat:@"%i seconds", elapsedTime];
    }
}

NSString *imagePath = [[@"State_" stringByAppendingString:cellAnswerName] stringByAppendingString:@".png"];
UIImage *image = [UIImage imageNamed:imagePath];

[[cell stateImage] setImage:image];
[[cell stateName] setText:cellAnswerName];
[[cell stateResult] setText:statusString];
[[cell statePoints] setText:pointsWon];


if([statusString isEqualToString:@"Wrong"])
[[cell stateResult] setTextColor:[UIColor redColor]];


return cell;

}

1 Ответ

0 голосов
/ 22 августа 2009

Это довольно странно.

Когда вы говорите «каждый второй запуск», как вы запускаете приложение? Сборка и запуск? Или просто бежать?

Если это сборка и запуск, есть ли у вас какие-либо пользовательские фазы сборки, которые копируют файлы или выполняют какую-либо пользовательскую обработку?

Обратный след указывает, что происходит сбой во время загрузки NIB, особенно когда он устанавливает выход. Есть ли шанс, что у вас неправильный объект в качестве владельца файла? Может быть, другой путь к коду в зависимости от того, что читается из файловой системы при запуске приложения?

...