Ios 苹果手表应用程序一夜之间冻结-你如何调试它?

Ios 苹果手表应用程序一夜之间冻结-你如何调试它?,ios,swift2,apple-watch,Ios,Swift2,Apple Watch,我创建了一个应用程序,效果很好。奇怪的是,当我通宵为手表充电后,当我切换到应用程序时,它会切换正常,但应用程序没有响应,或者在长时间延迟后对导航有响应 从设备上的日志中,我能知道的最好的情况是,应用程序出现在前台,但不响应导航命令,它似乎进入后台,但这可能是正常的调度 ... Dec 9 11:10:10 Jims-AppleWatch iap2d[213] <Warning>: process com.ijaz.iInteract.watchkitapp.wat

我创建了一个应用程序,效果很好。奇怪的是,当我通宵为手表充电后,当我切换到应用程序时,它会切换正常,但应用程序没有响应,或者在长时间延迟后对导航有响应

从设备上的日志中,我能知道的最好的情况是,应用程序出现在前台,但不响应导航命令,它似乎进入后台,但这可能是正常的调度

    ... 
    Dec  9 11:10:10 Jims-AppleWatch iap2d[213] <Warning>: process com.ijaz.iInteract.watchkitapp.watchkitextension is now running the foreground
    Dec  9 11:10:11 Jims-AppleWatch iap2d[213] <Warning>: process com.ijaz.iInteract.watchkitapp is now suspending
 ...
。。。
12月9日11:10:10 Jims AppleWatch iap2d[213]:process com.ijaz.iInteract.watchkitapp.watchkitextension现在正在前台运行
12月9日11:10:11 Jims AppleWatch iap2d[213]:process com.ijaz.iInteract.watchkitapp现在挂起
...
在终止应用程序并重新启动后,行为更符合我的预期,一旦启动它,它就不会挂起:

Dec  9 11:10:18 Jims-AppleWatch iap2d[213] <Warning>: process com.ijaz.iInteract.watchkitapp is now running the foreground
Dec  9 11:10:18 Jims-AppleWatch iap2d[213] <Warning>: process com.ijaz.iInteract.watchkitapp.watchkitextension is now running the foreground
Dec  9 11:10:26 Jims-AppleWatch Carousel[96] <Notice>: (Note ) log.facility.voicetrigger: ::: Received request to DISABLE voice trigger - Reason: Backlight turned on)
Dec  9 11:10:31 Jims-AppleWatch sharingd[26] <Error>: 11:10:31.383 : Failed to get taskInfo for Task <com.apple.nanoweatherd|B7795F05-2BDE-4896-9428-59A9442918BF>.<1>, replyMessage (null)
Dec  9 11:10:42 Jims-AppleWatch timed[33] <Notice>: (Note ) CoreTime: Received time 12/09/2015 19:10:41±0.01 from "TMLSSourceComputed"
Dec  9 11:10:42 Jims-AppleWatch timed[33] <Notice>: (Note ) CoreTime: Want active time in 139.59min. Need active time in 217.71min. Remaining retry interval: 0.000000min.
Dec  9 11:10:42 Jims-AppleWatch UserEventAgent[22] <Error>: validateAndAddDefaults(com.apple.timed): End Time (inf) > now (471381042.7) + BACKGROUND_TASK_AGENT_JOB_WINDOW_MAX_TIME_FROM_NOW_SEC (3024000.0) + BACKGROUND_TASK_AGENT_JOB_TIME_ERROR_MARGIN (300.0)
Dec  9 11:10:42 Jims-AppleWatch timed[33] <Notice>: (Note ) CoreTime: Received time 12/09/2015 19:10:42±0.00 from "TMLSSourceDevice"
Dec  9 11:10:42 Jims-AppleWatch timed[33] <Notice>: (Note ) CoreTime: Want active time in 139.58min. Need active time in 217.71min. Remaining retry interval: 0.000000min.
Dec  9 11:10:42 Jims-AppleWatch UserEventAgent[22] <Error>: validateAndAddDefaults(com.apple.timed): End Time (inf) > now (471381042.9) + BACKGROUND_TASK_AGENT_JOB_WINDOW_MAX_TIME_FROM_NOW_SEC (3024000.0) + BACKGROUND_TASK_AGENT_JOB_TIME_ERROR_MARGIN (300.0)
Dec  9 11:10:43 Jims-AppleWatch timed[33] <Notice>: (Error) CoreTime: Error requesting proactive time check job
Dec 9 11:10:18 Jims AppleWatch iap2d[213]:process com.ijaz.iInteract.watchkitapp现在正在前台运行
12月9日11:10:18 Jims AppleWatch iap2d[213]:process com.ijaz.iInteract.watchkitapp.watchkitextension现在正在前台运行
12月9日11:10:26 Jims AppleWatch转盘[96]:(注意)log.facility.voicetrigger:::收到禁用语音触发的请求-原因:背光已打开)
Dec 9 11:10:31 Jims AppleWatch sharingd[26]:11:10:31.383:无法获取任务的taskInfo.,replyMessage(null)
12月9日11:10:42 Jims AppleWatch timed[33]:(注)CoreTime:接收时间2015年9月12日19:10:41±0.01来自“TMLSourceComputed”
12月9日11:10:42 Jims AppleWatch timed[33]:(注意)CoreTime:希望活动时间为139.59分钟。需要217.71分钟的活动时间。剩余重试间隔:0.000000min。
12月9日11:10:42 Jims AppleWatch UserEventAgent[22]:ValidateAndDefaults(com.apple.timed):结束时间(inf)>now(471381042.7)+后台任务代理作业窗口最大时间从现在开始秒(3024000.0)+后台任务代理作业时间错误间隔(300.0)
12月9日11:10:42 Jims AppleWatch timed[33]:(注)CoreTime:从“TMLSourceDevice”接收的时间为2015年9月12日19:10:42±0.00
12月9日11:10:42 Jims AppleWatch timed[33]:(注意)CoreTime:希望活动时间为139.58分钟。需要217.71分钟的活动时间。剩余重试间隔:0.000000min。
12月9日11:10:42 Jims AppleWatch UserEventAgent[22]:ValidateAndDefaults(com.apple.timed):结束时间(inf)>now(471381042.9)+后台任务代理作业窗口最大时间(3024000.0)+后台任务代理作业时间错误(300.0)
12月9日11:10:43 Jims AppleWatch timed[33]:(错误)CoreTime:请求主动时间检查作业时出错
我将尝试今天/今晚复制,但如果/当我这样做时,我需要调试它的策略

以下是涉及的控制器:

import WatchKit
import Foundation


class InterfaceController: WKInterfaceController {

    @IBOutlet var tableView:WKInterfaceTable!
    var panels:[Panel] = [Panel]()

    override func awakeWithContext(context: AnyObject?) {
        panels = Panel.readFromPlist()
        super.awakeWithContext(context)
    }

    override func willActivate() {
        super.willActivate()
        setupTable()
    }

    private func setupTable() {

        var rowTypesList = [String]()

        for _ in panels {
            rowTypesList.append("PanelRow")
        }

        tableView.setRowTypes(rowTypesList)

        for var i = 0; i < tableView.numberOfRows; i++ {

            let panelRow = tableView.rowControllerAtIndex(i) as! PanelRow
            let panel = panels[i]
            panelRow.button.setTitle(panel.title)
            panelRow.button.setBackgroundColor(panel.color)
        }

    }

    override func contextForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> AnyObject? {
        return panels[rowIndex]
    }


}
class PanelController: WKInterfaceController {

    //Mark : Properties
    @IBOutlet var PanelVerticalGroup: WKInterfaceGroup!
    @IBOutlet var PanelTitle: WKInterfaceLabel!
    @IBOutlet var Button1: WKInterfaceButton!
    @IBOutlet var Button2: WKInterfaceButton!
    @IBOutlet var Button3: WKInterfaceButton!
    @IBOutlet var Button4: WKInterfaceButton!


    var panel : Panel?

    //Mark :  Functions
    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)

        let buttons = [self.Button1,self.Button2,self.Button3,self.Button4]

        for button in buttons {
            button.setHidden(true)
        }

        // Configure interface objects here.
        self.panel = context as? Panel
        PanelVerticalGroup.setBackgroundColor(panel!.color)
        PanelTitle.setText(panel!.title + " ...")
        PanelTitle.setTextColor(UIColor.blackColor())

        var i = 0
        for interaction in panel!.interactions {
            let button = buttons[i++]
            button.setHidden(false)
            button.setBackgroundImage(interaction.picture)
        }

    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }


    override func contextForSegueWithIdentifier(segueIdentifier: String) -> AnyObject? {
        let index = Int(segueIdentifier)

        //return the interaction object so we can draw the button etc
        let interaction = panel!.interactions[index!]
        let color = panel!.color
        let params : [AnyObject]? = [interaction,color]
        return params
    }

}
导入WatchKit
进口基金会
类InterfaceController:WKInterfaceController{
@IBVAR表格视图:WKInterfaceTable!
变量面板:[Panel]=[Panel]()
重写func awakeWithContext(上下文:AnyObject?){
panels=Panel.readFromPlist()
super.awakeWithContext(context)
}
重写func willActivate(){
super.willActivate()
setupTable()
}
专用函数设置表(){
var rowTypesList=[String]()
用于面板中的uu{
rowTypesList.append(“PanelRow”)
}
tableView.setRowTypes(rowTypesList)
对于变量i=0;iAnyObject{
返回面板[行索引]
}
}
类PanelController:WKInterfaceController{
//马克:财产
@IBOutlet var PanelVerticalGroup:WK接口组!
@IBOutlet var PanelTitle:WKInterfaceLabel!
@IBOUTLE var按钮1:WKInterfaceButton!
@IBOUTLE var按钮2:WKInterfaceButton!
@IBOUTLE var按钮3:WK接口按钮!
@IBOutlet var按钮4:WK接口按钮!
var面板:面板?
//马克:功能
重写func awakeWithContext(上下文:AnyObject?){
super.awakeWithContext(context)
让按钮=[self.Button1,self.Button2,self.Button3,self.Button4]
用于按钮中的按钮{
按钮。设置隐藏(true)
}
//在此处配置接口对象。
self.panel=上下文作为面板
PanelVerticalGroup.setBackgroundColor(panel!.color)
PanelTitle.setText(panel!.title+“…”)
PanelTitle.setTextColor(UIColor.blackColor())
变量i=0
用于面板交互中的交互{
let button=按钮[i++]
按钮。设置隐藏(错误)
按钮。setBackgroundImage(交互。图片)
}
}
重写func willActivate(){
//当监视视图控制器即将对用户可见时,调用此方法
super.willActivate()
}
重写func diddactivate(){
//当监视视图控制器不再可见时,调用此方法
超级
}
重写func contextForSegueWithIdentifier(segueIdentifier:String)->AnyObject{
let index=Int(segueIdentifier)
//返回交互对象,以便我们可以绘制按钮等
让交互=面板!.interactions[索引!]
让颜色=面板颜色
let params:[AnyObject]?=[interaction,color]
返回参数
}
}