我似乎在dispatch_queue_t和NSOperationqueue队列之间有一些混乱.

默认情况下,AFNetworking的AFImageRequestOperation将在应用程序的主线程上执行成功回调块.要更改此功能,AFHTTPRequestOperation具有successCallbackQueue属性,可以让您选择运行回调的队列.

我正在尝试在已经执行HTTP请求的相同后台队列/后台线程上执行成功回调.运行HTTP请求的NSOperationQueue并不返回主线程,也应该运行回调,因为我需要使用一些返回的映像进行一些繁重的计算.

我的第一个尝试是将successCallbackQueue设置为运行AFImageRequestOperation的NSOperationQueue实例.但是,successCallbackQueue属性的类型为dispatch_queue_t,所以我需要一种方法来获取我的NSOperation实例的底层dispatch_queue_t,如果有这样的事情.

这是可能的,还是需要创建一个单独的dispatch_queue_t?

我问的原因:AFNetworking继承自NSOperation,但是希望我们使用dispatch_queue_t队列进行回调,这有点奇怪.种类混合了两个paradigmas dispatch_queue_t和NSOperationQueue.

感谢任何提示!

解决方法

没有这样的事情,NSOperationQueue和dispatch_queue_t没有一一对应的关系,两个API中的排队概念是非常不同的(例如,NSOperationQueue没有像GCD那样的严格的FIFO排队).

NSOperationQueue用于执行代码的唯一调度队列是全局并发队列的默认优先级.

ios – 从NSOperationQueue获取底层dispatch_queue_t的更多相关文章

  1. ios – 从NSOperationQueue获取底层dispatch_queue_t

    解决方法没有这样的事情,NSOperationQueue和dispatch_queue_t没有一一对应的关系,两个API中的排队概念是非常不同的.NSOperationQueue用于执行代码的唯一调度队列是全局并发队列的默认优先级.

  2. 在Swift中应用Grand Central Dispatch(上

    在这两篇教程中,你会学到GCD的来龙去脉。起步libdispatch是Apple所提供的在IOS和OSX上进行并发编程的库,而GCD正是它市场化的名字。Swift中的闭包和OC中的块类似甚至于他们几乎就是可交换使用的。但OC中的块可以安全的替换成Swift中的闭包。再一次,这完全取决于GCD。QoS等级表示了提交任务的意图,使得GCD可以决定如何制定优先级。QOS_CLASS_USER_INteraCTIVE:userinteractive等级表示任务需要被立即执行以提供好的用户体验。

  3. 在Swift中应用Grand Central Dispatch 下

    通过使用dispatch_barrrier和dispatch_sync,你做到了让PhotoManager单例在读写照片时是线程安全的。还有,使用dispatch_async异步执行cpu密集型任务,从而为视图控制器初始化过程减负。幸运的是,dispatchgroups就是专为监视多个异步任务的完成情况而设计的。调度组调度组在一组任务都完成后会发出通知。在组内所有事件都完成时,GCDAPI提供了两种方式发送通知。打开PhotoManager.swift,替换downloadPhotosWithComple

  4. 【荐】Grand Central Dispatch Tutorial for Swift: Part 1/2

    所有的dispatchqueues自身都是线程安全的。dispatch_sync把任务添加到对应队列并等待其完成后再继续执行当前任务,容易造成死锁,或阻塞当前任务。dispatch_after指定时间后把任务添加到队列中。效果就像是延时后的dispatch_async。而array和dictionary在swift中是以struct的形式实现的,所以以上的读操作返回的是一个副本。在GCD中使用dispatchbarrier来解决这个问题。dispatchbarrier是一组方法,它们都已顺序化的方式来结合

  5. swift详解之十六-----------GCD基础部分

    当你了解了调度队列如何为你自己代码的不同部分提供线程安全后,GCD的优点就是显而易见的。这完全取决于GCD。这个队列就是用于发生消息给UIView或发送通知的。GCD的“艺术”归结为选择合适的队列来调度函数以提交你的工作。

  6. swift 快速奔跑的兔几 本节的内容是:闭包儿和操作队列

    swift语言允许将代码存储在变量中。用于完成这一任务的机制叫做操作队列。使用闭包儿,可以让实际执行对象处理工作的代码与数据代码的代码行非常接近。利用操作队列可以实现这两个目标。用GUI完成的所有工作都是在主队列上完成的。具体做法是向NSOperationQueue对象发送addOperationWithBlock消息。varmainQueue=NSOperationQueue.mainQueue()mainQueue.addOperationWithBlock(){//添加代码}要向操作队列中添加操作,

  7. swift__多线程GCD详解

    有以下*-disPATCH_QUEUE_PRIORITY_HIGH:*-disPATCH_QUEUE_PRIORITY_DEFAULT:多用默认*-disPATCH_QUEUE_PRIORITY_LOW:*-disPATCH_QUEUE_PRIORITY_BACKGROUND:*第二个参数为预留参数,一般为0*/letmyQueue:dispatch_queue_t=dispatch_get_global_queue//用异步的方式运行队列里的任务dispatch_async//-------------

  8. Swift - 多线程实现方式3 - Grand Central DispatchGCD

    dispatchqueue可以是并发的或串行的。dispatch_suspend后,追加到DispatchQueue中尚未执行的任务在此之后停止执行。6//创建并行队列conQueue:dispatch_queue_t=dispatch_queue_create//暂停一个队列dispatch_suspend//继续队列dispatch_resume6,dispatch_once一次执行保证dispatch_once中的代码块在应用程序里面只执行一次,无论是不是多线程。注意,我们不能(直接)取消我们已经提

  9. 完整详解 swift GCD系列一dispatch_async;dispatch_sync;dispatch_async_f;dispatch_sync_f

    源代码只提供Swift版本。因为要上班,计划一个月内完成。原创Blog,转载请注明出处这个专栏地址http://blog.csdn.net/column/details/swift-gcd.htmlGCD全称:GrandCentraldispatch简介:GCD是对多线程、多核开发较完整的封装。在使用GCD的时候,系统会自动根据cpu使用情况进行调度,所以GCD是一个简单易用,但是效果很好地多线程多核开发工具。教程一教程一涵盖了1、GCD全局队列的四个优先级2、几种本文使用到的GCD类型3、dispatc

  10. Swift3使用GCD和DispatchQueues

    在iOS中,苹果提供了两种方法来进行多任务处理:`GrandCentraldispatch`和`NSOperationQueue`框架。但在`Swift3`之前它都跟天书一样,与`swift`格格不入的古董C语言风格,晦涩难记的方法名都让你望而却步,码农们宁愿用`NSOperaionQueue`都不用`GCD`,稍微的搜索了解下你就会明白有多糟糕。正式进入话题:dispatchQueues入门在Swift3中,创建`dispatchqueue`方式如下:1letqueue=dispatchQueue只需给

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部