奇怪的Watchkit和NSTimer问题

时间:2015-05-23 03:14:44

标签: ios nstimer watchkit

我正在玩WatckKit,使用NSTimer以模态方式呈现一个接口控制器,一切正常,但我遇到了一个奇怪的问题。

我使用整数来跟踪控制器的状态, -2 表示监视界面已初始化, -1 表示用户已取消模态显示controller和 0 表示当前显示模态控制器。我正在使用这些任意值,因为我不相信有机制通知父控制器模型控制器已被解除。

在WKInterfaceController的 willActivate 方法中,该值设置为 -1 。来自Apple文档:

  

willActivate方法可让您知道界面的时间   在Apple Watch上可见

所以这是我的演示应用程序的代码。请注意,呈现布尔值仅用于确保模态接口仅呈现一次:

var i = -2
var presented = false
var timer:NSTimer?

override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
        timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("time"), userInfo: nil, repeats: true)
}

func time() {
        println("\(NSDate().description) : \(i)")
        if(!presented) {
            presentControllerWithName("Interface", context: nil)
            i = 0
            presented = true
        }
}

override func willActivate() {
        super.willActivate()

        if(i == 0) {
            i = -1
        }
}

现在,如果我们观察println给出的输出,这就是我得到的:

2015-05-23 02:22:16 +0000 : -2
2015-05-23 02:22:16 +0000 : -2
2015-05-23 02:22:18 +0000 : 0
2015-05-23 02:22:18 +0000 : 0
2015-05-23 02:22:20 +0000 : 0
2015-05-23 02:22:20 +0000 : 0
2015-05-23 02:22:22 +0000 : 0
2015-05-23 02:22:22 +0000 : 0
2015-05-23 02:22:24 +0000 : 0
2015-05-23 02:22:24 +0000 : -1
2015-05-23 02:22:26 +0000 : 0
2015-05-23 02:22:26 +0000 : -1
2015-05-23 02:22:28 +0000 : 0
2015-05-23 02:22:28 +0000 : -1
2015-05-23 02:22:30 +0000 : 0
2015-05-23 02:22:30 +0000 : -1

一开始我们打印 -2 ,这很好,因为整数被初始化为。然后显示模态界面,值变为 0s 。当界面被解除时,将激活并将其值更改为 -1 ,但在控制台输出中,该值在-1和...之间振荡。 0?我不知道为什么会这样。另一个问题是为什么值每2秒打印两次?

0 个答案:

没有答案