2016-09-21 24 views
0

我在watchos2上有一個smartwatch應用程序。該應用程序總是工作,但它現在開始,當我立即得到這個錯誤:Watch應用程序啓動錯誤clientIdentifier interfaceControllerID未找到

Lop_WatchKit_Extension[17535:7854201] *********** ERROR -[SPRemoteInterface _interfaceControllerClientIDForControllerID:] clientIdentifier for interfaceControllerID:447E0002 not found 

我發現了一些主題在這裏計算器,但沒有解決的問題。

回答

0

您是否更改了模塊的名稱?如果是這種情況,那麼您必須通過故事板並手動更新所有您所擁有的接口。

編輯解決步驟:

轉至故事板,併爲每個接口打開身份檢查,然後刪除什麼的模塊,然後按回車,新的模塊應該得到自動填充。

+0

模塊領域是對所有interfacecontrollers空。當我點擊它,然後按刪除(但它是空的),然後按,它仍然不會自動填充? – user1007522

+0

你有什麼設置項目文件 - >觀看應用程序目標 - >生成設置 - >界面生成器故事板編譯器 - >默認模塊?我相信應該和InterfaceController中的一樣。 – tonik12

+0

它填寫了該組的名稱,例如該組被稱爲X WatchKit應用程序,模塊是X_WatchKit_App,但它是哪個?我需要檢查別的東西嗎? – user1007522

0

在我的情況下,這是由於一個保留週期在我的一個InterfaceController

如果您收到類似日誌:

[default] -[SPRemoteInterface _interfaceControllerClientIDForControllerID:]:0000: ComF: clientIdentifier for interfaceControllerID:XXXXXXXX not found

& /或...

[default] _SendRecordedValues:000: ComF:<-Plugin controller ID XXXXXXXX has no client identifier

首先,找出哪些InterfaceController具有控制器ID XXXXXXXX

有這awake(withContext:)

override func awake(withContext context: Any?) { 
    //... 

    if let id = self.value(forKey: "_viewControllerID") as? NSString { 
     let strClassDescription = String(describing: self) 

     print("\(strClassDescription) has the Interface Controller ID \(id)") 
    } 

    //... 
} 

此日誌:一旦你確定了InterfaceController造成這些日誌

[Target.Classname: 0xYYYYYYYY] has the Interface Controller ID XXXXXXXX

,您可以繼續調試。

你的情況可能有所不同,但在我的情況下,我在self創建了一個保留週期,其中一個關閉期間需要一段時間才能找到,但我最終以[weak self]捕獲打破了保留週期。

基本上,當InterfaceController試圖執行某些代碼但已被釋放時,會顯示錯誤日誌。


我已經有了:

DispatchQueue.main.async { 
    self.doSomethingThatDoesSomethingAsync() 
} 

我定:

DispatchQueue.main.async { [weak self] in 
    self?.doSomethingThatDoesSomethingAsync() 
} 
相關問題