问题标签 [grand-central-dispatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 将非主运行循环任务转换为 GCD
我有一个定期运行的任务,它最初设计为在一个单独的运行循环上运行,而不是使用 NSThread 和 NSTimer 的主运行循环。
调整它以利用 GCD 的最佳方法是什么?
当前代码:
detachNewThreadSelector
除了替换之外我还能做些什么dispatch_async
吗?
iphone - NSURLConnection with delegate vs initWithContentsOfURL: with Grand Central Dispatch
我正在编写一个从 Internet 下载大量 JSON 数据的应用程序。我的应用需要解析这些 JSON 数据,然后将检索到的对象返回给自制委托。
现在我想知道是否可以更好地使用 NSURLConnection 或 Grand Central Dispatch 的组合dispatch_async
(initWithContentsOfURL:
使用 GCD 来防止挂起)。
使用 Grand Central Dispatch更容易实现,尤其是因为我不需要委托、NSMutableData 或所有其他临时使用的变量。但是,当然,凡事有利有弊。
initWithContentsOfURL
NSURLConnection与 GCD相比有哪些优势?
iphone - 一段时间后显示 UIAlertView
我试图在一段时间后显示 UIAlertView(比如在应用程序中做某事后 5 分钟)。如果应用程序已关闭或在后台,我已经通知用户。但我想在应用程序运行时显示 UIAlertView。
我尝试如下 dispatch_async 但警报永远弹出:
另外,我读到线程在 30 到 60 分钟后死亡。我希望能够在 60 多分钟后显示警报。
cocoa - 在 Grand Central Dispatch 中使用 dispatch_sync
谁能用非常清晰的用例解释dispatch_sync
in的目的GCD
是什么?我不明白我必须在哪里以及为什么要使用它。
谢谢!
iphone - 使用 dispatch_group_async 时,块会一个接一个地被触发
数组中的 URL 一个接一个地被调用。不应该像 nsoperationqueue 那样一次性调用它吗?请在这里帮助我,谢谢
iphone - 为方法传递块
我想将不同的块传递给一个方法。该方法随后将使用传入的块作为 dispatch_async 的参数。
我的块声明如下:
接受块的类方法实现为:
block
可以将 ' ' 参数类型转换为dispatch_block_t
吗?
multithreading - CLLocation 管理器从后台线程更新
我正在使用以下命令发起本地化请求Grand Central Dispatch
:
它在我的 Singleton 类 LocationManager Controller 中调用一个静态方法:
在 startUpdates 方法中, 的CLLocationManager
, 属性LocationManagerController
被初始化并要求startUpdatingLocation
.
最后,位置更新发生时的方法:
我的问题是 locationManager 只发送 3 个位置更新然后停止发送更新,即使我没有要求它停止。所以基本上,我永远不会退出 while(![locationManagerController getterDone]) 循环。
顺便说一句,在尝试使用 GCD 实现它之前,它工作正常,所以我猜这个问题与我的多线程实现有关。
任何想法 ?
编辑
我在控制台中没有收到任何错误。该程序一直在运行,但我被困在那个 while 循环中,并且在 3 个第一个位置更新后没有其他任何事情发生。
谢谢 !
cocoa - 工作表和长时间运行的任务
用户单击按钮后,我需要运行一个复杂(即长)的任务。该按钮打开一个工作表,并使用 dispatch_async 和其他 Grand Central Dispatch 东西开始长时间运行的操作。
我已经编写了代码并且工作正常,但是我需要帮助来了解我是否正确地完成了所有操作,或者我是否忽略了(由于我的无知)任何潜在的问题。
用户单击按钮并打开工作表,该块包含长任务(在此示例中,它仅运行 for(;;) 循环该块还包含在任务完成时关闭工作表的逻辑。
该面板包含一个停止按钮,允许用户在任务完成之前停止任务
iphone - __blocks 并在 dispatch_sync 中分配对象
我想返回一个数组,其内容是在 dispatch_sync 块期间设置的。
我通常看到的代码是这样的:
如果我不是在复制一个完整的数组,而是想一个一个地添加,我可以跳过返回值上的“自动释放”吗?
dispatch_sync 块中的 [NSMutableArray 数组] 分配是否安全,以便在此方法完成堆栈后继续使用结果?
ios - NSOperationQueue 和并发操作
正如NSOperationQueue
Class Reference 所说:在 iOS 中,操作队列不Grand Central Dispatch
用于执行操作。它们为非并发操作创建单独的线程,并从当前线程启动并发操作。
但我发现在 iOS 4.2.1 中,队列总是为并发或非并发操作创建线程。而且我认为队列根本不关心并发或非并发,因为 isConcurrent 中的断点永远不会被打破。所以我认为参考是错误的......