use*_*522 2 objective-c ios watchos-2
我在watchos2上有一个smartwatch应用程序。该应用程序始终可以运行,但是现在启动时,我立即收到此错误:
Lop_WatchKit_Extension[17535:7854201] *********** ERROR -[SPRemoteInterface _interfaceControllerClientIDForControllerID:] clientIdentifier for interfaceControllerID:447E0002 not found
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一些有关stackoverflow的主题,但没有任何解决方案。
就我而言,这是由于我的一个人的保留周期所致InterfaceController。
如果您获得类似于以下内容的日志:
[默认]-[SPRemoteInterface _interfaceControllerClientIDForControllerID:]:0000:ComF:找不到 interfaceControllerID:XXXXXXXX的 clientIdentifier
&/要么...
[默认] _SendRecordedValues:000:ComF:<-插件控制器ID XXXXXXXX没有客户端标识符
首先,找出哪个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)")
}
//...
}
Run Code Online (Sandbox Code Playgroud)
记录:
[Target.Classname:0xYYYYYYYY]具有接口控制器ID XXXXXXXX
一旦确定了InterfaceController导致这些日志的原因,就可以继续进行调试。
您的情况可能会有所不同,但是在我的情况下,我self在一个关闭中创建了一个保留周期,在其中花了一段时间才找到它,但最终我被[weak self]捕获破坏了保留周期。
基本上,当an InterfaceController尝试执行某些代码但已被释放时,将显示错误日志。
我已经拥有的:
DispatchQueue.main.async {
self.doSomethingThatDoesSomethingAsync()
}
Run Code Online (Sandbox Code Playgroud)
我修复的问题:
DispatchQueue.main.async { [weak self] in
self?.doSomethingThatDoesSomethingAsync()
}
Run Code Online (Sandbox Code Playgroud)
您更改了模块的名称吗?如果是这种情况,那么您必须仔细检查故事板并为您拥有的所有界面手动更新它。
编辑修复步骤:
转到故事板,为每个界面打开身份检查器,然后删除模块中的内容并按 Enter 键,新模块应该会自动填充。
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |