我有以下代码的变体,由用户输入触发。完全神秘 - 随机延迟后执行iOS方法
NSLog(@"WHY YOU iOS!!!");
[scanButton setSelected:YES];
[overlayImageView setImage:image];
[overlayView setHidden:YES];
事情是,上述例程执行看似从5秒到一分多钟的随机延迟。
有时,他们根本不执行,除了神秘的NSLog方法。如果我在NSLog行设置断点,它只是立即执行,我可以看到“为什么你......”打印在控制台中。但是,即使调试器在下面三条线路上顺利运行而没有错误或警告,但接下来的三条线路的效果会在随机延迟或无限延迟之后发生。怎么了?他们怎么可能有随机延迟?
我怀疑Cocoa SDK的UI部分由于我的糟糕的程序设计或任何其他原因而暂停,但即使在随机延迟期间,其他按钮和功能也能正常工作,而setImage的效果突然在47.2秒内发生。 iOS或我有什么问题?
更让我困惑的是,如果图像参数(UIImage *)来自不同的来源,上述确切的例程无延迟地正常工作。如果是这样,我们可以将问题的原因归因于图像,但是,为什么scanButton和overlayView也会以相同的延迟响应,即使它们与图像无关?对我完全神秘。
iOS没什么问题(好吧,iOS有很多错误,但可能不是这个部分)。请展示更多的代码 - 这些代码在哪里以及如何运行,以及之后会发生什么? –
我在编码中学到的一件事是任何神秘都是可能的。这似乎是一个谜,因为你忽略了几个运动部件。如果你把所有的部分放在一起,你就解开了这个谜。它被称为调试! – mbh
@mbh对。我刚解决了这个问题,发现这个谜题的根源是我的无知,而不是代码,或编译器的工作方式。他们不是神秘的,因为他们只是确定性的自动机。错误在我脑海中。现在,我应该开始调试我的头来调试实际的代码。无论如何,谢谢你的洞察力。 –