我遇到了一个奇怪的问题。我有一个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语句将显示我希望看到的内容。
我做错什么了?
当做,
安德莉亚

最佳答案

我不确定你想做什么,但可能是你把你的类型混为一谈:

for (self.composizione; *composizione>kFine; composizione++) {
    int c=(int)*composizione;

self.composizione之后的for(是多余的,它不会做任何事情。应该吗?
*composizione是由composizione指向的值,它应该是一个int*(是吗?)
composizione++将指针移到内存中的下一个位置,而不是*composizione的值
简而言之:也许你需要一个(*composizione)++而不是composizione++

09-11 17:50