我刚刚开始学习swift 2,我正在Xcode'playground'中测试一些东西。当创建'pyx'的实例(下面)时,我没有看到我期望的控制台输出。我确信我犯了一个愚蠢的错误,但在盯着它看了一段时间之后,我无法弄明白。
class zxy {
var gameTimer = NSTimer()
var counter = 0
init() {
gameTimer = NSTimer (timeInterval: 1, target: self, selector: "Run:", userInfo: nil, repeats: true)
}
func Run(timer : NSTimer) {
while(counter < 10){
print(counter)
counter++
}
timer.invalidate()
}
}
先谢谢。
答案 0 :(得分:4)
您的代码有2个问题。正如@glenstorey在他的回答中指出的那样,你需要调用方法scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
,而不是你正在调用的init方法。
正如@DanBeauleu在对我的回答的评论中所说的那样,电话会在Swift中看起来像这样:
NSTimer.scheduledTimerWithTimeInterval(
1,
target: self,
selector: "Run:",
userInfo: nil,
repeats: true)
第二个问题是你的Run方法。
你不想要一个while循环。这将在计时器第一次触发时在很短的时间内重复10次,然后使计时器无效。
您的计时器方法需要像这样更改:
func Run(timer : NSTimer)
{
if counter < 10
{
print(counter)
counter++
}
else
{
timer.invalidate()
}
}
(顺便说一句,通过强约定,方法/函数名称应以小写字母开头,因此您的Run
函数应该命名为run
。)
答案 1 :(得分:3)
你已经创建了一个NSTimer对象,但这并没有启动计时器 - 只是准备就绪了。使用scheduledTimerWithTimeInterval创建并启动计时器。