2016-09-21 7 views
0

私はwatchos2でスマートウォッチアプリを使用しています。それは私がすぐにこのエラーを取得する起動時にアプリが常に今働いたが:時計アプリがエラーで始まるinterfaceControllerIDのclientIdentifierが見つかりません

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

私はここにStackOverflowにいくつかのトピックを見つけましたが、何も問題は解決しません。

答えて

0

モジュールの名前を変更しましたか?これが当てはまる場合、あなたのストーリーボードを通って、あなたが持っている全てのインターフェースについて手動で更新する必要があります。ステップと

編集修正する:その後、入力モジュールには何削除を押し、ストーリーボードに

移動して、各インターフェイスのためのアイデンティティインスペクタを開き、新しいモジュールが自動入力を取得する必要があります。

+0

モジュールフィールドはinterfacecontrollersのすべての空です。私はそれをクリックして、ちょうど削除を押して(しかし、それは空)とし、それを押しても、まだ自動入力されません? – user1007522

+0

[プロジェクトファイル] - > [アプリケーションターゲットの監視] - > [ビルド設定] - > [Interface Builder Storyboard Compiler] - > [Default Module]私はそれがInterfaceControllerのものと同じでなければならないと信じています。 – tonik12

+0

これはグループの名前で埋められています。たとえば、グループはX WatchKit Appと呼ばれ、モジュールはX_WatchKit_Appですが、それは何ですか?私は別のものをチェックする必要がありますか? – user1007522

0

私の場合、これは保持サイクルが1つにはInterfaceControllerであったためです。

あなたがに似たログを取得した場合:

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

& /または...

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

まず、コントローラID XXXXXXXXを有しているInterfaceController見つけ出します。あなたはこれらのログを引き起こしInterfaceControllerを特定したら、デバッグを継続することができます

[Target.Classname: 0xYYYYYYYY] has the Interface Controller 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)") 
    } 

    //... 
} 

にこのログをこれを持っています。

あなたのケースでは違うかもしれませんが、私はで閉鎖サイクルを作成していましたが、閉鎖にはしばらく時間がかかっていましたが、最終的には[weak self]キャプチャで保持サイクルを破りました。

InterfaceControllerがいくつかのコードを実行しようとしても、まだ解放されていると、エラーログが表示されます。


私はすでに持っていた何か:

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

私は固定どう:

DispatchQueue.main.async { [weak self] in 
    self?.doSomethingThatDoesSomethingAsync() 
} 
関連する問題