【发布时间】:2015-12-26 01:05:41
【问题描述】:
我是 Swift 2 的新手,我从未在 Apple 开发过。 Objective C 看起来很丑,你必须写很多代码,所以 Swift 很喜欢,因为语法类似于 Java 和 C,我的问题是:
在Java中你可以这样定义一个类:
new Thread(){
public run(){
// anything
}
}.start();
那么,Swift 可以做到这一点吗?怎么做?
感谢和问候
解决方案
let myThread=NSThread(target: self, selector: "backgroundWork", object: nil)
myThread.start()
}
func backgroundWork(){
for (self.counter=0;self.counter<10;self.counter++){
//self.myLabel.text = String(self.counter) // Not update UI
self.performSelectorOnMainThread( Selector("updateLabel"), withObject: nil, waitUntilDone: false )
sleep(3)
}
}
func updateLabel(){
self.myLabel.text = String(self.counter)
}
【问题讨论】:
-
这是一个匿名类,在 Java 8 中将使用 lambda 实现,而在 Groovy 和 Swift 中将使用 Closure 实现
-
这是一个新的Thread-Object的初始化,而不是一个类的定义。
-
@Christian 定义了一个新的匿名类,继承
Thread。 -
是的,是匿名类,谢谢 Andreas。解决了。
-
...并以反对票感谢 Objective-C 程序员 ;)
标签: java multithreading swift anonymous