草庐IT

grand-central-dispatch

全部标签

ios - 使用 GCD 的异步 UITableViewCell 图像加载

我目前正在尝试加载Flickr照片的UITableView列表(cs193piOSStanford,作业5)。为避免UI阻塞事件,我已将每个单元格的缩略图下载推迟到不同的队列中(但请将UI更新回主队列)。此代码不会异步加载图像,但会在我单击UITableViewCell行后添加缩略图。(见下面的截图)。知道我做错了什么吗?PS:我已经查看了其他一些stackoverflow问题和Apple的LazyTableImages示例,但我仍然相信这是实现预期结果的最简洁方法。谢谢!-(UITableViewCell*)tableView:(UITableView*)tableViewcellF

iphone - Objective-C,使用 UI 事件取消调度队列

场景:用户点击一个按钮,要求对地址簿进行某种修改。调用一个方法来开始此修改并显示一个警报View。为了显示警报View并保持UI响应,我使用了dispatch_queue:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{dispatch_sync(dispatch_get_main_queue(),^{//Showthealertview});});使用以下命令启动地址簿修改过程:dispatch_async(modifyingAddressBookQueue,^{});现在,我

iphone - Objective-C,使用 UI 事件取消调度队列

场景:用户点击一个按钮,要求对地址簿进行某种修改。调用一个方法来开始此修改并显示一个警报View。为了显示警报View并保持UI响应,我使用了dispatch_queue:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{dispatch_sync(dispatch_get_main_queue(),^{//Showthealertview});});使用以下命令启动地址簿修改过程:dispatch_async(modifyingAddressBookQueue,^{});现在,我

ios - 我应该如何在 iOS 中使用 GCD dispatch_barrier_async(似乎在其他 block 之前而不是之后执行)

我正在尝试在iOS5中同步以下代码:一个对象有一个方法可以发出HTTP请求获取一些数据,包括图像的URL数据到达后,文本数据用于填充核心数据模型同时,分派(dispatch)第二个线程异步下载图片;当该图像已缓存并在CoreData模型中可用。由于图片下载需要一段时间,我们立即返回CoreData对象,它具有除图像之外的所有属性来电者。此外,当第二个线程完成下载时,CoreData模型可以保存。这是(简化的)代码:-(void)insideSomeMethod{[SomeHTTPRequestwithCompletionHandler:^(idretrievedData){if(!re

ios - 我应该如何在 iOS 中使用 GCD dispatch_barrier_async(似乎在其他 block 之前而不是之后执行)

我正在尝试在iOS5中同步以下代码:一个对象有一个方法可以发出HTTP请求获取一些数据,包括图像的URL数据到达后,文本数据用于填充核心数据模型同时,分派(dispatch)第二个线程异步下载图片;当该图像已缓存并在CoreData模型中可用。由于图片下载需要一段时间,我们立即返回CoreData对象,它具有除图像之外的所有属性来电者。此外,当第二个线程完成下载时,CoreData模型可以保存。这是(简化的)代码:-(void)insideSomeMethod{[SomeHTTPRequestwithCompletionHandler:^(idretrievedData){if(!re

ios - GCD - 用于更新 UIImageView 的主线程与后台线程

我是GCD和block的新手,正在逐步入门。背景:我正在使用ALAssetsLibrary为UIScrollView开发延迟加载例程。当我的UIScrollView加载时,我用我的ALAssets的aspectRatioThumbnails填充它,然后当用户滚动时,我调用下面的例程来加载当前正在加载的ALAsset的fullScreenImage显示。它似乎有效。(如果有人有更好的延迟加载例程,请发表评论。我已经查看了我能找到的所有内容以及WWDC视频,但它们似乎更多地处理平铺或比我需要的复杂得多)我的问题:我使用后台线程来处理加载fullScreenImage,完成后我使用主线程将其

ios - GCD - 用于更新 UIImageView 的主线程与后台线程

我是GCD和block的新手,正在逐步入门。背景:我正在使用ALAssetsLibrary为UIScrollView开发延迟加载例程。当我的UIScrollView加载时,我用我的ALAssets的aspectRatioThumbnails填充它,然后当用户滚动时,我调用下面的例程来加载当前正在加载的ALAsset的fullScreenImage显示。它似乎有效。(如果有人有更好的延迟加载例程,请发表评论。我已经查看了我能找到的所有内容以及WWDC视频,但它们似乎更多地处理平铺或比我需要的复杂得多)我的问题:我使用后台线程来处理加载fullScreenImage,完成后我使用主线程将其

ios - 标记生成 : What is VM: Dispatch continuations

“VM:Dispatchcontinuations”下的分配是什么意思?(http://i.stack.imgur.com/4kuqz.png) 最佳答案 @InkGolem在正确的线上。这是GCD内部调度block的缓存。@AbhiBeckert偏差了1000倍。16MB是200万个64位指针,而不是20亿。这个缓存是在每个线程的基础上分配的,你只是看到这个缓存的分配大小,而不是实际使用的大小。16MB完全在范围内,如果您在后台线程上进行大量分派(dispatch)(并且由于您使用的是RAC,我猜您是这样)。基本上不用担心。

ios - 标记生成 : What is VM: Dispatch continuations

“VM:Dispatchcontinuations”下的分配是什么意思?(http://i.stack.imgur.com/4kuqz.png) 最佳答案 @InkGolem在正确的线上。这是GCD内部调度block的缓存。@AbhiBeckert偏差了1000倍。16MB是200万个64位指针,而不是20亿。这个缓存是在每个线程的基础上分配的,你只是看到这个缓存的分配大小,而不是实际使用的大小。16MB完全在范围内,如果您在后台线程上进行大量分派(dispatch)(并且由于您使用的是RAC,我猜您是这样)。基本上不用担心。

ios - 主队列上的 dispatch_async block 永远不会执行

我有一个应用程序使用连接队列来处理后台线程上的连接。每个连接发送一个JSONpost,然后当它收到成功时,将一些对象保存到coredata中。所有连接完成后,我在主线程上调用dispatch_async来调用finished方法。但是,在发送/保存数据的非常特殊的条件下,我注意到主线程的dispatch_asyncblock永远不会被调用,应用程序屏幕卡住,所有执行停止,并且应用程序闲置且屏幕卡住。根据xcode的处理能力为0%。这是失败block的方法。-(void)connectionDidComplete{_completeConnections++;_syncProgress=