Смешивание Objective C и C в операторе switch пытается добавить подпункт iphone SDK - PullRequest
1 голос
/ 28 июля 2010

У меня странная проблема. У меня есть цикл for, внутри цикла есть оператор switch. Счетчик в цикле for - это указатель, который указывает на начало примитивного массива, он увеличивает себя до тех пор, пока не найдет «номер терминатора». Указанный массив используется для построения представления, каждый элемент представляет подпредставление для представления в представлении. Вот код:

    for (self.composizione; *composizione>kFine; composizione++) {
    int c=(int)*composizione;
    NSLog(@"%d",c);
    switch (c) {
        case kForchettaPesce:   case kForchettaNormale:
        {
            NSString *imagePath;
            imagePath=[[NSString alloc]initWithFormat:@"%@/%d.png",[[NSBundle mainBundle]resourcePath],c];
            UIImage *image=[[UIImage alloc]initWithContentsOfFile:imagePath];
            [imagePath release];
            NSLog(@"pippo");
            UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
            imageView.image=image;
            [image release];
            [self.view addSubview:imageView];
            [imageView release];

        break;
        }


        default:
        break;
    }
    NSLog(@"%d",(int)*composizione);



}

Отладка. Я обнаружил, что она работает идеально, пока не попытается добавить подпредставление. Кажется, что он застрял в цикле, и журнал всегда показывает одни и те же данные в бесконечном цикле. Если я удаляю метод -addSubview, у меня нет проблем, оператор log показывает то, что я ожидаю увидеть. Что я делаю неправильно? С Уважением, Andrea

1 Ответ

1 голос
/ 28 июля 2010

Я не уверен, что вы пытаетесь сделать, но может случиться так, что вы как бы смешиваете свои типы:

for (self.composizione; *composizione>kFine; composizione++) {
    int c=(int)*composizione;
  • * self.composizione после for(избыточно, ничего не делаетДолжно ли это?
  • *composizione - это значение, на которое указывает composizione, которое должно быть int* (не так ли?)
  • composizione++ увеличивает указатель до следующего места в памяти, а не значение из *composizione

, короче: возможно, вам нужно (*composizione)++ вместо composizione++.

...