我遇到了一个奇怪的问题。我有一个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++
。