嘿idk如果我做错了什么或者我应该为此提交一个错误报告。
我初始化UI元素到我的主viewcontroller,如下所示:
knob[7] =[[UIImageView alloc] initWithFrame:CGRectMake(a, b, c, d)];
knobS[7] =[[knobBand alloc] initWithFrame:CGRectMake(a, b, c, d)];
knob[8] =[[UIImageView alloc] initWithFrame:CGRectMake(a, b, c, d)];
那我知道了
[self.view addSubview:knobS[7]];
[knob[7] setImage:[UIImage imageNamed:@"knob"]];
[knob[8] setImage:[UIImage imageNamed:@"knob"]];
[self.view addSubview:knob[7]];
[self.view addSubview:knob[8]];
如果我把[self.view addSubview:knobS[7]];
放在其他4行下面,knob[7]
和knob[8]
将根本不会显示,尽管它们大小相同,只有knob[7]
被knobS[7]
覆盖。我认为这是一些编程错误,所以我没有进一步研究这个问题,因为将上述行放在4行之上是有效的-直到我第三次构建项目,这就是它变得奇怪的地方:
现在,每当我建造,建造和清洁,清洁和建造,...在这个项目中,会发生以下三件事之一:
1.仅显示knobS[7]
1.显示所有3个UI元素
1.项目生成,但启动时在setImage:
行抛出EXC_BAD_ACCESS
发生的次数是相当准确地总结了顺序; 1.发生的时间为60%; 2. 30%,病例3发生在1/10的病例中。
我试着重新启动,没有一行代码捕获当前时间或可能影响代码结果的随机值。即使在10秒内点击CMD+R两次而不更改任何代码,我也会得到2个不同的结果。
是否有任何其他形式的清洁/建设一个项目,这可能有助于在这里?
编辑:这种行为在Xcode 7中是无法重现的,只有6会导致问题。
2条答案
按热度按时间uelo1irk1#
如果我把[self.view addSubview:knobS[7]];在其他4行下面,旋钮[7]和旋钮[8]将完全不显示
您正在创建三个大小相同的控件。最后一个加在上面。你可能看到也可能看不到其他的,这取决于上面的那个是如何画自己的,背景是否不透明,等等。
现在,每当我建造,建造和清洁,清洁和建造,...在这个项目中,会发生以下三件事之一:
听起来你有一个坏的指针,也许还有其他一些错误。如果使用无效指针,应用可能会引发异常,也可能不会,具体取决于指针是否恰好指向有效对象。这类问题给人一种非常不确定的感觉,因为它们对微小的变化非常敏感:在内存中,对象首先被分配到哪里,何时被释放,是否有其他东西使用相同的内存被分配,等等。
我试着重新启动,没有一行代码捕获当前时间或可能影响代码结果的随机值。
没关系--你真的不能指望系统在你的应用程序的一次运行和下一次运行之间处于完全相同的状态。
是否有任何其他形式的清洁/建设一个项目,这可能有助于在这里?
您构建项目的方式没有任何问题,而且可能也不需要清理。enable NSZombies,这将使您指向已释放对象的指针指向一个小对象,当您尝试使用该指针时,该小对象将触发异常。这应该使问题更加明显,更容易重复。
nr9pn0ug2#
x1c 0d1x转到Xcode设置-->常规-->问题
取消选中“显示实时问题”。这为我解决了问题