grand-central-dispatch相关内容
我有一个UITableView,显示与每行中的联系人关联的图像。在一些情况下,这些图像在地址簿联系人图像的第一显示器上被读取,并且在没有一个的情况下,他们是基于存储的数据呈现的化身。我现在使用GCD在后台线程上更新这些图像。但是,这会按照请求的顺序加载图像,这意味着在快速滚动期间队列变得冗长,当用户停止滚动时,当前单元格是 last 以进行更新。在iPhone 4上,这个问题并不是很明显,但我很想
..
我的应用程序中有一个场景,我想在一个方法中做一些耗费时间的任务,其中包括一些数据处理和UI更新。我的方法看起来像这样, - (void)doCalculationsAndUpdateUIs { // DATA PROCESSING 1 // UI UPDATE 1 //数据处理2 // UI更新2 //数据处理3 // UI更新3 }
..
是否可以在主线程上运行完成块? 例如,我有一个方法返回一个值: - (int)test { / *这里用完成块调用一个方法,返回类型为void * / [obj somemethodwithcompeltionblock: { / *这里我得到的是我要归还的Int * / } ]; } 但是我看不到如何从完成内返回整数值阻止作为此方法的
..
使用 Grand Central Dispatch ,可以轻松地在非主线程上执行耗时的任务,避免阻塞主要主题并保持UI响应。只需使用 dispatch_async 并在全局并发队列上执行任务。 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^ { // code });
..
我创建了一个这样的串行队列: dispatch_queue_t _serialQueue = dispatch_queue_create(“com.example.name”, DISPATCH_QUEUE_SERIAL); dispatch_async 之间的区别是什么? dispatch_async(_serialQueue,^ {/ * TASK 1
..
我在我的应用程序中使用了GCD和performSelectorOnMainThread:waitUntilDone,并且倾向于认为它们是可互换的 - 也就是说,performSelectorOnMainThread:waitUntilDone是GCD C语法的Obj-C包装器。我一直在考虑这两个命令是等价的: dispatch_sync(dispatch_get_main_queue(),
..
我在网上发现了一些使用GCD创建单例类的信息。这很酷,因为它的线程安全,开销很低。遗憾的是,我找不到完整的解决方案,只能找到sharedInstance方法的片段。所以我使用试错法制作了自己的课程 - 以及等等 - 以下内容: @implementation MySingleton // MARK: - // MARK:使用GCD的单一模式 +(id)allocWith
..
我在修改线程内的视图时遇到问题。我尝试添加子视图,但显示大约需要6秒或更长时间。我终于搞定了,但我不知道究竟是怎么回事。所以我想知道它为什么有效以及以下方法之间有什么区别: //这个工作 - 立即添加了视图 dispatch_async(dispatch_get_main_queue(),^ { //一些UI方法ej [查看addSubview:otherView]; }
..
我一直在使用我的应用程序中的成功,盛大的中央调度,但我想知道使用这样的东西的真正优势是什么: dispatch_async(dispatch_get_main_queue(),^ {...做东西 甚至 dispatch_sync(dispatch_get_main_queue(),^ {... do stuff 我的意思是,在这两种情况下,你都要
..
在Swift 2中,我能够使用 dispatch_after 来延迟使用大中央调度的行动: var dispatchTime:dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW,Int64(0.1 * Double(NSEC_PER_SEC))) dispatch_after(dispatchTime,dispatch_get_main_q
..
使用GCD时,我们要等到两个异步块执行完毕后再继续执行下一步。最好的方法是什么? 我们尝试了以下方法,但它似乎不起作用: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0),^ { // block1 }); dispatch_async(dispatch_get_globa
..
有没有办法在延迟后调用带有原始参数的块,比如使用 performSelector:withObject:afterDelay:,但是带有像 int / double / float ? 解决方案 我认为您正在寻找 dispatch_after()。它要求您的块不接受任何参数,但您可以让块从本地范围捕获这些变量。 int parameter1 = 12; float parame
..
在Swift 2中,我能够使用以下代码创建队列: let concurrentQueue = dispatch_queue_create(“com。 swift3.imageQueue“,DISPATCH_QUEUE_CONCURRENT) 但这不能在Swift 3中编译。 在Swift 3中写这个的首选方法是什么? 解决方案 创建一个并发队列
..
如果您可以定位iOS 4.0或更高版本 使用GCD,它是在Objective C(线程安全)中创建单例的最佳方式吗? +(instancetype)sharedInstance { 静态dispatch_once_t一次; 静态id sharedInstance; dispatch_once(& once,^ { sharedInstance = [[self alloc
..
我已经浏览了 iBook 来自Apple,但找不到它的任何定义: 有人可以解释 dispatch_after ? dispatch_after(,,) 解决方案 A更清楚的结构概念: dispa
..
我对iOS中的多线程有一个普遍的疑问: 在我非常简单的测试应用中,我使用NSURLSession从服务器下载一些小图像并将它们呈现在表格视图。在NSURLSession的回调中,在检索图像之后,我像这样调用tableview.reloadData(): var session = NSURLSession .sharedSession()。dataTaskWithURL(NSURL(
..
我有一种情况,我需要发出两个HTTP GET请求,并且只有在两个完成后才能处理它们的结果。我在每个单独的网络请求上都有一个完成处理程序,但它没有帮助,因为我不知道何时检索来自两个请求的数据。 我的经验有限GCD但是现在Swift 3已经出局了,我试图找出如何运行多个任务并为它们设置一个完成处理程序。我的研究表明,GCD或NSOperationQueue可能是我正在寻找的解决方案。任何人都可以
..
我的iOS应用程序中有Apple App Store的链接,我试图将它们作为事件进行跟踪。 问题是我们无法使用我的应用程序在GA事件进入后台之前正确分派GA事件。我们正在使用iOS SDK v2beta4。 以下是我们正在使用的代码的概述。您可以看到我们已经投入了很多我称之为“保险策略”的代码,因为我们认为是正确的方式并不奏效。但即使是保险政策代码并不总是在我的应用程序进入后台之前调度
..
我想要排队的功能不需要任何参数。我作为 paramContext 传入了什么?传入NULL会产生编译错误“无效使用void表达式”。我不想为我的函数添加一个参数来编译它 - 我如何完成这项工作? Mac OS X Snowleopard,包含Objective的Xcode 3.2.6 -C 解决方案 您需要以某种方式包装该功能。最简单的方法实际上是使用 dispatch_async(
..
我想知道使用for循环和使用GCD的 dispatch_apply 函数有什么区别,在文档中也没有找到答案, 。 另外,在运行时将使用GCD函数作为GLKit的render / update方法会产生更好的结果吗? $ b $ b 回答这个问题的唯一方法就是尝试一下并衡量性能。
..