私の場合、これは保持サイクルが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()
}
モジュールフィールドはinterfacecontrollersのすべての空です。私はそれをクリックして、ちょうど削除を押して(しかし、それは空)とし、それを押しても、まだ自動入力されません? – user1007522
[プロジェクトファイル] - > [アプリケーションターゲットの監視] - > [ビルド設定] - > [Interface Builder Storyboard Compiler] - > [Default Module]私はそれがInterfaceControllerのものと同じでなければならないと信じています。 – tonik12
これはグループの名前で埋められています。たとえば、グループはX WatchKit Appと呼ばれ、モジュールはX_WatchKit_Appですが、それは何ですか?私は別のものをチェックする必要がありますか? – user1007522