nsrunloop相关内容

为什么在SWIFT的Mac命令行工具中使用DispatchQueue.main.async时需要运行循环?

我找到了Apple的文档,了解为什么我应该使用Run循环来实现主调度队列中的任务。 根据Apple docs, 主派发队列是在应用程序的主线程上执行任务的全局可用的串行队列。此队列与应用程序的运行循环(如果存在)配合使用,以使排队任务的执行与附加到运行循环的其他事件源的执行交错。因为它在应用程序的主线程上运行,所以主队列为应用程序的关键同步点。 但是,我仍然不能理解为什么需要运行循环 ..
发布时间:2022-04-15 17:17:02 移动开发

理解 NSRunLoop

谁能解释一下什么是NSRunLoop?所以我知道 NSRunLoop 是一个与 NSThread 相关的东西,对吗?所以假设我创建了一个像 这样的线程 NSThread* th=[[NSThread alloc] initWithTarget:self selector:@selector(someMethod) object:nil];[第一个开始];-(void) someMethod{N ..
发布时间:2021-12-20 22:44:39 移动开发

你如何安排一个块在下一次运行循环迭代中运行?

我希望能够在下一次运行循环迭代中执行 block.它是在下一个运行循环的开始还是结束执行并不那么重要,只是将执行推迟到当前运行循环中的所有代码执行完毕. 我知道以下内容不起作用,因为它与主运行循环交错,因此我的代码可能会在下一个运行循环中执行,但可能不会. dispatch_async(dispatch_get_main_queue(),^{//我的代码}); 以下我认为遇到与上述相同的 ..

如何在后台线程上创建 NSTimer?

我有一个任务需要每 1 秒执行一次.目前我有一个 NSTimer 每 1 秒重复触发一次.如何在后台线程(非 UI 线程)中触发计时器? 我可以让 NSTimer 在主线程上触发,然后使用 NSBlockOperation 来调度后台线程,但我想知道是否有更有效的方法来做到这一点. 解决方案 定时器需要安装到运行在已经运行的后台线程上的运行循环中.该线程必须继续运行运行循环才能真正触 ..
发布时间:2021-12-17 22:35:11 移动开发

调用 -[NSRunLoop runUntilDate:] 是个好主意吗?

通常调用 -[NSRunLoop runUntilDate:] 是个好主意吗?它似乎没有任何问题地工作,但是告诉运行循环从运行循环内运行让我感到紧张. 更多信息: 我现在有一个从 REST 服务获取数据的项目.需要获取的一项关键信息是具有有效数据的日期范围.这是一个非常小的数据,只需要获取一次,所以我决定处理它的最佳方法是如果局部变量为 nil,则让属性下载数据.我正在使用 ASIHT ..
发布时间:2021-11-28 22:42:31 移动开发

NSMenuItem 中的 NSProgressIndicator 未在第二个显示器上更新

我有一个 NSMenu 附加到一个 NSStatusItem(一个菜单栏应用程序).下载文件时,我想在此菜单的项目中显示 NSProgressIndicator.我为这个进度指示器创建了一个 NSViewController 子类,具有以下属性: @property NSUInteger 当前;//绑定到 NSProgressIndicator 值@property NSString *stat ..
发布时间:2021-11-16 20:25:31 移动开发

在UIScrollView内的UIImageView中添加捏/缩放效果

我有一个非常基本的屏幕共享iPhone应用程序,我已经使用 UIScrollView 内的 UIImageView 将捏/缩放效果成功添加到了我的应用程序中. UIImageView 定期接收来自PC的屏幕内容.一切都正常,但是一旦我滚动/捏/缩放就可以了,但随后它停止了,即使服务器仍然发送屏幕内容,更新图像视图内容的委托方法也停止启动.整个应用似乎被冻结了,但是没有错误消息/异常/任何信息 ..
发布时间:2021-05-17 19:08:06 移动开发

计时器在Objective-C中的另一个线程中

我必须定义应在一定时间间隔内定期调用的方法.我需要在另一个线程(不是主线程)中调用它,因为此方法用于从外部API获取信息并同步核心数据中的数据. 我如何定义此方法以不阻塞主线程? 解决方案 除非您特别需要计时器,否则可以使用Grand Central Dispatch. 以下代码段将在2秒后在默认优先级并发队列(即后台线程)上执行一个块.如果您认为合适,可以更改队列的优先级,但 ..
发布时间:2021-05-16 20:40:49 移动开发

如何立即从Runloop中删除计时器

我有一个在5秒钟内触发的计时器添加到全局队列中,尽管我在2秒钟后使运行循环无效,直到5秒钟才终止.在以下代码段中,backgroundTimer是实例var,而run是成员函数.以下代码阻止了运行循环终止,这是怎么回事? dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^ {_backgro ..
发布时间:2021-05-13 19:02:57 移动开发

NSURLConnection弄乱了iPad的内存

我们构建了一个iPad应用程序,该应用程序从Web服务下载大量数据和PDF文档(首先是数据,然后是后台文件).为此,我们通过HTTP(S)请求使用SOAP.它可以正常运行,并且该应用程序运行良好.问题是,如果某个时刻有太多文档无法下载,则应用程序崩溃.使用仪器,我发现这是一个内存问题,尤其是NSRegularExpression和NSRunLoop. (我正在使用ARC) 我可以改进代码以优 ..
发布时间:2021-02-08 19:30:40 移动开发

应用程序后台运行时,NSTimer的行为是什么?

我知道,当您为应用程序添加背景时,计时器会停止运行.但是,当您从后台回来时,该怎么办?计时器是否保持其原始的fireDate? 我遇到了一个问题:从后台返回时,NSTimer设置为在十分钟内触发,有时我会立即触发定时器,甚至在调用applicationWillEnterForeground:之前.当它不触发并调用applicationWillEnterForeground:时,我有一些逻辑可 ..
发布时间:2020-12-01 02:44:16 移动开发

如何处理使用GCD的NSStream运行循环调度带来的并发问题?

在以下情况下,我创建一个GCD调度队列,并在其中调度 NSStream 到当前的 NSRunLoop ,按照它的规范要求它发出委托事件,然后使用 [[NSRunLoop currentRunLoop run] 使该线程运行。 p> 这会产生三种可能的情况: 在其中创建一个串行队列最初的写消息通过流发送,而其他写消息仅在 NSStream 对象存在委托回调的情况下发送,因为尝试写新消息时 ..

AVPlayerStatus和AVPlayerItemStatus

问题是 player.status返回AVPlayerStatusReadyToPlay整整2秒钟,然后player.currentItem.status返回AVPlayerItemStatusReadyToPlay .有人对为什么会发生这种情况有任何有用的解释吗? 这只是示例代码,用于显示发生的情况的基本思想,因此,如果有任何错别字或任何错别字,请忽略它们. - (void) someM ..
发布时间:2020-09-15 04:48:31 移动开发

NSURLConnection是否需要NSRunLoop才能执行?

我正在尝试从名为connect的方法中获取URL的内容.它读取其配置设置并尝试获取URL.似乎需要运行循环才能执行.我虽然只执行一次就可以完成.似乎我不需要使运行循环运行,除了在每次调用connect时一次获取此URL之外.有更好的方法吗? - (BOOL) connect { // read serverName and eventId from preferences ..
发布时间:2020-05-19 00:58:15 移动开发

UIPickerView的“抢先式"讯息?

我遇到UIPickerView被计算任务“饿死"的情况;换句话说,UIPickerView永远不会更新-因此也就不会发送消息-因为正在执行非常繁重的计算任务.选择器控制着计算的各个方面,因此两者必须表现得很好. 我想到了在单独的线程中运行计算.似乎那样会使选择器自由更新.但是,要使我的计算具有多线程能力是一项艰巨的任务,因此我想找到另一个解决方案. 选择器(或其他UI控件)是否可以“抢 ..
发布时间:2020-05-14 01:32:36 移动开发

UI滚动时,应用程序停止从套接字接收数据

我有一个iPad应用程序,该应用程序使用UDP套接字接收数据.它具有UIWebView来浏览网页. 但是,当在UIWebView中滚动时,所有内容都冻结,并且没有接收到任何数据. 我一直在搜索,它与runloops和线程有关.但是,如果UIWebView不能在主线程之外的其他线程中运行,那么在滚动时如何接收数据?继续接收数据至关重要. 该项目使用了可可AsyncSocket 中的AsyncU ..
发布时间:2020-05-14 00:41:08 移动开发