贡献者:赵大财
博客:https://my.oschina.net/zhaodacaiGitHub:https://github.com/dacaizhao
邮箱: dacai_zhao@163.com QQ:327532817
=============================

dispatchQueue.main.asyncAfter(deadline: .Now() + 0.9) {
            self.currentView.isUserInteractionEnabled = true
        }
func hideView(afterDelay:CGFloat) {
        let after =  TimeInterval(afterDelay)
        dispatchQueue.main.asyncAfter(deadline: dispatchTime.Now() + Double(Int64(after * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC),execute: {
            self.maskview.removeFromSuperview()
        })
        
    }
dispatchQueue.global().async {
     //耗时操作
dispatchQueue.main.async {
     //刷新UI
}
}
​
// 创建一个队列组
let group = dispatchGroup()  
// A任务入组
group.enter()
// A任务异步操作
dispatchQueue.global().async(group: group,execute: dispatchWorkItem(block: {
     sleep(2)
     print("download task A ...")
     // 出组
     group.leave()
}))
// B任务入组
group.enter()
// B任务异步操作
dispatchQueue.global().async(group: group,execute: dispatchWorkItem(block: {
     sleep(2)
     print("download task B ...")
     // 出组
     group.leave()
}))
// 主线程监听,只有当队列组中没有任务,才会执行闭包。如果多次调用该方法,每次都会去检查队列组中是否有任务,如果没有任务才执行
group.notify(queue: dispatchQueue.main) { 
     print("complete!")
}

​

swift3.0 dispatch_after 延时操作的更多相关文章

  1. ios – 为自定义创建的串行异步队列设置优先级

    如何使用GCD为自定义创建的串行异步队列设置高优先级?如果是这样,什么是替代解决方案?解决方法您的队列仍然是串行的.它只会在高优先级全局并发后台队列的一个插槽中一次执行一项任务.一旦创建,串行队列就不能以任何方式“并发”.同样,如果您创建并发队列并将其设置为以串行队列为目标,则它实际上变为串行.这一切都在manpage中有所涉及.

  2. 在Swift中应用Grand Central Dispatch 下

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

  3. 同步和异步

    如果是同步操作,它会阻塞当前线程并等待Block中的任务执行完毕,然后当前线程才会继续往下运行。并行队列中的任务根据同步或异步有不同的执行方式。同步执行异步执行串行队列当前线程,一个一个执行其他线程,一个一个执行并行队列当前线程,一个一个执行开很多线程,一起执行创建队列:主队列:这是一个特殊的串行队列。传入disPATCH_QUEUE_CONCURRENT表示创建并行队列。

  4. swift3.0 dispatch_after 延时操作

    贡献者:赵大财博客:https://my.oschina.net/zhaodacaiGitHub:https://github.com/dacaizhao邮箱:dacai_zhao@163.comQQ:327532817=============================

  5. swift – AlamoFire异步completionHandler for JSON请求

    使用AlamoFire框架后,我注意到completionHandler在主线程上运行。然而,Alamofire实际上可以帮助你更精简这一点。让我们来看看一个替代方法利用Alamofire内的强大功能。Alamofire响应分派队列Alamofire有自己的低级处理内置的最佳方法。下面的示例演示如何使用Alamofire逻辑直接开箱即用。Alamofire1.xAlamofire3.xAlamofire4.xAlamofire调度队列细分下面是这种方法涉及的不同调度队列的细分。说到这一点,我不能强调足够熟

  6. Swift可以从异步Void返回块中返回值吗?

    我想创建一个函数来检查user_id是否已经在我的数据库中.但是,observeSingleEventOfType是第三方Firebase提供的API.它定义为返回Void.(void)observeSingleEventOfType:(FEventType)eventTypewithBlock:(void(^)(FDataSnapshot*snapshot))block错误:类型’Void’不符

  7. setTimeout与setInterval到AJAX异步

    setTimeout与setInterval执行看下这道题的执行结果如何:首先我们看一下以下代码打印结果打印结果是1、4、3、2,你可能觉得理所应当,那我们再看下下面这个例子这次的结果又会是什么呢?)setInterval原理与之相同,不作另说。总的来说,setTimeout与setInterval的执行会等到主线程的所有任务全部执行后,才会再执行其中的回调函数,所以在使用它们的时候也要注意,特别是在主线程中有特别耗时的任务的时候,两种定时器会被不可预测的延后。

  8. 如何按照顺序执行异步ajax的回调函数

    之前在业务上遇到了一个需求,需要有依赖顺序地执行不定数量的ajax请求到服务器。我在jQuery的基础上使用了队列和递归的方法初步实现了顺序执行异步ajax请求的回调函数。

  9. ajax 同步和异步的区别|已迁移

    同步会阻塞后面的代码,也就是说假设这个ajax请求要35秒,浏览器就会阻塞住35秒不执行后面的,知道等到ajax请求完成。异步不能在回调之外直接拿到返回的data,要拿的话自行同步需要等待返回结果才能继续,异步不必等待,一般需要监听异步的结果同步是在一条直线上的队列,异步不在一个队列上各走各的文章转自链接一链接二

  10. ajax异步请求实例

    实际可行的解决方式是:采用ajax异步请求,重点在异步,我利用用户名处理的逻辑不在usermanagement.PHP中,而是转移到了usermanagement_show_queues.js中,针对加载完的页面,每一行代表一个用户,逐行读取,也就是说会逐行启动ajax去服务器端请求结果,由于是异步的页面会正常显示,也不会影响其它的事件。

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部