在swift中使用线程休眠

C#和php都有sleep让线程休眠指定时间后再继续执行后面的代码,swift中应该如何呢?
首先,找一下objective-c版本是怎么做的

[self performSelector:@selector(didTimeOut:) withObject:nil afterDelay:60];
// 顺便演示下取消
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(didTimeout:) object:nil]

经过查找,swift中可以这么做:

var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("someSelector"), userInfo: nil, repeats: false)
func someSelector() {
    // Something after a delay
}

或者这样:

var delta: Int64 = 1 * Int64(NSEC_PER_SEC)
var time = dispatch_time(DISPATCH_TIME_NOW, delta)
dispatch_after(time, dispatch_get_main_queue(), {
    println("closures are " + txt)
    resolve()
});
// 当然没这么恐怖,time可以直接传数字时间
dispatch_after(1, dispatch_get_main_queue(), {
    // your function here
})

按C#的Threading.Thread.sleep(5000)的写法,swift中有:

NSThread.sleepForTimeInterval(3)

可实际上,一个跟php完全一样的用法是完全可行的:

sleep(3)

在swift中使用线程休眠,布布扣,bubuko.com

时间: 2024-08-01 22:46:15

在swift中使用线程休眠的相关文章

Android中使用ListView实现分页刷新(线程休眠模拟)

当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程大致分以下几步: 1.当前Activity implements OnScallListenner: 2.实现接口的方法: 3.ListView注册滚动监听: 4. Adapter(自定义或者安卓自带)为每个item填充数据: 5.获得第二页以后的数据后,adater增加数据并刷新notifyDat

Android中使用ListView实现分页刷新(线程休眠模拟)(滑动加载列表)

当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程大致分以下几步: 1.当前Activity implements OnScallListenner: 2.实现接口的方法: 3.ListView注册滚动监听: 4. Adapter(自定义或者安卓自带)为每个item填充数据: 5.获得第二页以后的数据后,adater增加数据并刷新notifyDat

Swift中编写单例的正确方式

Swift中编写单例的正确方式 2015-12-07 10:23 编辑: yunpeng.hu 分类:Swift 来源:CocoaChina翻译活动 14 10647 Objective-CSwift单例 招聘信息: Cocos2d-x 工程师 cocos2dx手游客户端主程 wp开发 iOS开发工程师 iOS软件工程师 iOS研发工程师 iOS讲师 iOS开发工程师 iOS高级开发工程师 iOS 高级软件工程师 iOS高级开发工程师 本文由CocoaChina译者leon(社区ID)翻译自kr

Swift中的init方法

摘要:Swift有着超级严格的初始化方法,不仅强化了designated初始化方法的地位,所有不加修饰的init方法都需要在方法中确保非Optional的实例变量被赋值初始化,而在子类中,也强制调用super版本的designated初始化. 我们在深入初始化方法之前,不妨先再想想Swift中的初始化想要达到一种怎样的目的. 其实就是安全.在Objective-C中,init方法是非常不安全的:没有人能保证init只被调用一次,也没有人保证在初始化方法调用以后,实例的各个变量都完成初始化,甚至如

每天进步一点点——Linux中的线程局部存储(一)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/26469435 在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程序的性能会得到一定的提高.那么对于那些系统不支持原子操作的自定义数据类型,在不使用锁的情况下如何做到线程安全呢?本文将从

C++11 中的线程、锁和条件变量

转自:http://blog.jobbole.com/44409/ 线程 类std::thread代表一个可执行线程,使用时必须包含头文件<thread>.std::thread可以和普通函数,匿名函数和仿函数(一个实现了operator()函数的类)一同使用.另外,它允许向线程函数传递任意数量的参数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <thread> void func() {    // do some work } int

Swift新手教程系列5-函数+selector在swift中的使用方法

原创blog.转载请注明出处 近期在用swift写代码,尽管遇到一些问题,可是代码量确实减了不少. swfit新手教程系列会随着我使用swfit中的积累,不断地去修正更新 之前的教程 swift单例模式具体解释-线程安全,多核性能 swift新手教程4-集合(Array,Dictionary) swift新手教程3-字符串String swift新手教程2-运算符 swift新手教程1-准备知识 在swift中,函数有keywordfunc声明 格式 func 函数名(參数1,參数2,...)-

游戏中逻辑线程和逻辑线程的并行

为什么要将游戏的渲染线程和逻辑线程分离? 游戏中渲染是一个非常耗时的操作,特别是相对复杂的游戏,渲染通常会占据一帧中的大部分时间.而高品质的游戏都会要求FPS在60,所以一帧的时间仅仅16毫秒. 如果要在16毫秒内完成逻辑和渲染双重的任务,对于大型游戏来说,通常是艰难的,即使在极度优化的情况下,也可能只能满足性能较好的设备,在性能较差的设备上,几乎不可能在16毫秒内完成所有任务. 所以如果将渲染线程和逻辑线程分离,那么理论上,他们各自都有16毫秒的时间来完成各自的任务,因为他们是并行进行的,这样

swift中的optional

optional一些理解和总结: Optional作为一种类型,既可以存储一个值,也可以为空(也就是swift里的nil): 其实为一个枚举类型,包含nil或者一个值,如下: enum Optional<T>: _Reflectable, NilLiteralConvertible { case None case Some(T) //... } 它只有两种状态,包含一个值或者为空:optional有效解决了值为空的清空:我们可以通过判断一个对象是否为空了做出相应解决,通过if let a =