Xcode 4.0.1已经开始给我一个内部编译器错误.它只是说“总线错误”.它发生在我的一个.m文件的底部,现在差不多有4000行.
我已经看了this question,但我没有犯这个错误,当它出现时,我通常可以通过在某处添加一些随机代码来修复它.当它第一次出现时,我将它追踪到我在一堆新代码中设置视图框架的位置:
view.frame = CGRectMake(otherView.frame.origin.x,otherView2.frame.size.width,40);
如果我用硬编码值替换了otherView和otherView2引用,问题就消失了.或者如果我只是把int x = 0;在违规线之上,它消失了.
我也看过this question,但它没有明确的答案.它似乎不是任何单独的代码行;它只是随机出现.谷歌没有任何我能找到的明确解决方案.
我已经尝试了所有可能的项目编译器(GCC 4.2,LLVM GCC 4.2和LLVM编译器2.0,它们都有问题.我将静态分析器设置为运行每个构建,并关闭它不会帮助.This question似乎表明它是编译器中的一个错误.我只是卡住了吗?有解决方法吗?
编辑:另一个例子:它再次发生,我追踪到:
[headerView centerViewVertically:milesLabel pixelsFromRight:pointLabel.frame.size.width + 20];
我改成了:
int x = pointLabel.frame.size.width; [headerView centerViewVertically:milesLabel pixelsFromRight:x + 20];
它再次起作用.
解决方法
我发现了这个错误,结果发现错误是我的,基本上是由类型o引起的,或者更准确地说是一个粘贴o.
我正在创建两个标签并将它们添加到子视图中.代码基本上就像这样.
UILabel *pointsLabel = [[UILabel alloc] initWithFrame:ptsFrame]; ... [self addSubview:pointsLabel]; [pointsLabel release]; UILabel *typeLabel = [[UILabel alloc] initWithFrame:typeFrame]; ... [self addSubview:pointsLabel]; [typeLabel release];
请注意,在第二个addSubview中,我再次添加了pointsLabel,即使我已经发布了它(并且真的是要添加typeLabel).我希望这也会导致运行时错误,但无论出于何种原因,它都会导致上面描述的总线错误.要寻找的东西.