我在应用程序中遇到了一个奇怪的错误,我正在尝试使用单步执行来调试它。
然而,iPhone 上的事情似乎通常不会像我希望的那样同步发生,例如当我跨过这条线时 [self.view addSubview:FinndomoEmbeddedMWView.view]; 模拟器中没有任何反应。 如果我只是让程序运行,则会添加 View 并且屏幕会按预期变化。
所以我猜测,addSubview 并没有执行与添加 View 相关的所有操作,它只是启动该过程,然后稍后完成。
我不知道ios上是否有类似winapi的消息队列,但肯定有类似的东西,那么有没有“处理所有累积消息”的功能。然后,我想在 addSubview 之后调用此函数,并在调试时(而不是程序运行时)实际看到模拟器中的情况发生变化。
我不仅在使用 addSubview 时遇到过这种情况,所以我希望有一个针对此类问题的通用解决方案。
最佳答案
昨天坐下来找到了答案:
NSDate *dtr = [[NSDate alloc] initWithTimeIntervalSinceNow:0.5];
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:dtr];
这有点是我想要的。正如您所看到的,如果没有更多事件,此特定代码可能最终会等待 0.5 秒,如果有待处理的事件,则它仅处理第一个事件,然后返回(根据文档)。
但这当然是可以避免的,这只是一个例子,如果有人想要同样的东西的话。就我而言,只有 1 个重要事件,因此提供的代码片段有效。
关于objective-c - 是否有 "processing messages"的功能,即更新屏幕,响应累积的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141792/