objective-c - 是否有 "processing messages"的功能,即更新屏幕,响应累积的用户输入

标签 objective-c ios control-flow

我在应用程序中遇到了一个奇怪的错误,我正在尝试使用单步执行来调试它。

然而,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/

相关文章:

java - 从抽象语法树中获取控制流图

ios - 为什么 UIButton 框架被 setTitle : forState: method 重置

objective-c - Objective C 登录时记住数据

iOS v10 或更低版本 : How to add UISearchController in the bottom of navigation bar Programmatically

ios - recognizer.location(在 : recognizer. View 中) swift 返回零点

c# - 需要帮助才能摆脱异常丛林

Objective-C:使用 isa 属性来确定变量是否已被释放

objective-c - 使用 NSBezierPath 快速绘制至少 4000 个线段

ios - Objective-C 回调/ block 模式

f# - 列表中的for循环