2015-01-05 7 views
12

私は今日のiOSで作業しています。しかし、リアル iOSデバイス上で動作しているとき、私は時折参照してください。 host connection <NSXPCConnection: 0x538ee0> connection from pid 42 invalidated "ホスト接続<NSXPCConnection:0x538ee0> pid 42からの接続が無効になりました" iOS Todayウィジェット用

これは時折今日でスペースを残して、ウィジェットはこの問題が発生したときに、ほぼリロードすると思われることを除いて、大きな問題ではないようですiOSが再描画してすべてが再読み込みされるまで、画面の空白が表示されます。

他に誰かがこれに遭遇しましたか?私は自分のアプリケーションでNSXPCConnectionを使用していないので、これはフレームワークに組み込まれているものと仮定していますが、わかりません。

+1

これはhttp://stackoverflow.com/questions/27011952/debug-info-when-run-today-extensionに似ている可能性があります – ryno2019

+0

これについての解決策は見つかりましたか? –

+0

いいえ、私は更新してください!今のところ私はウィキウィジェットの動作に苦しんでいる。 – ryno2019

答えて

9

NSXPCConnection APIは、XcodeクライアントとiPhone上のアプリケーション間のプロセス間接続。だから、これについて心配する必要はありません。

リンク: https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html

だからあなたのウィジェットが終了した2つの理由があるかもしれません。

  1. completionHandler(NCUpdateResultNoData)を呼び出す必要があります。応答が返されなかった場合でもウィジェットの直後に呼び出されます。

  2. アプリの自動終了によりアプリが終了しました。

:それは2つの理由のためのウィジェット/アプリケーションを終了します。これは、使用されていないアプリケーションを終了させ、メモリなどのリソースの再利用を可能にします。

b。あまりにも多くのメモリを使用するウィジェットは終了します。

+0

同意しましたが、私のウィジェットはメモリ警告を受けていません。上記のホスト接続メッセージとウィジェットのリロードの間に密接な関係があるようです。 – ryno2019

+0

デバッグ中にアイドル状態になっている可能性があるので、デバッガは接続を閉じてメモリを再利用することにしました。 – bllakjakk

+0

私のウィジェットは同じ問題に直面しています。私はいずれのメモリ警告も受けていないようです。ウィジェットは約5MBメモリで実行されています(かなり高いようです)。 – bencallis

5

最後に私のウィジェットで問題が発生していることがわかりました。それはNSXPCConnectionとは関係なく、私のためにウィジェットのライフサイクルについての誤解であることが判明しました。

ドキュメンテーションから、ウィジェットの「スナップショット」は、ウィジェットの状態が成功して呼び出されるまで、今日のビューはウィジェットの状態を保持すると考えていました。

これはそうではないようです。私が見ることのできるところから、「スナップショット」は、Todayビューがアニメーション化されているとき(ユーザーが通知センターをプルダウンするとき)にのみ使用されます。今日のビューが読み込まれ、固定されると、あなたのウィジェットはゼロからロードされ(使用する場合はxibから拡張されます)、viewDidLoadが呼び出されます。現時点では、Webリクエストからではなくキャッシュデータをウィジェットに埋め込む必要があります。そうしないと、ペン先からの一時的なデータが表示されます。これが点滅を引き起こす原因です。

viewDidLoadが完了したときに、新しいデータを取得できるようにするwidgetPerformUpdateWithCompletionHandlerが呼び出されます。新鮮なデータを取得するときは、完了ハンドラを呼び出してデータをキャッシュして、後でウィジェットが最初からロードされたとき(viewDidLoad内)に使用できるようにする必要があります。

データをキャッシュする簡単な方法は、ユーザーのデフォルトです。

これが役に立ちます。

関連する問題