1

WatchApp InterfaceController をアクティブにすると。最初に行うことは、「OpenParentApplication」メソッドを呼び出して、parentApplication を起動しようとすることです (または、ドキュメントに従ってバックグラウンドでアクティブ化します)。

ただし、親iPhoneでアプリを手動でアクティブ化するまで、メソッドは応答しません。また、「XXX Unexpectedly Quit」というメッセージが表示されます。これは、ホスト アプリを呼び出していたときに、何らかの理由でクラッシュしたことを意味します。

ここに画像の説明を入力

アクティベーション後は「OpenParentApplication」メソッドで自由に情報交換ができます。

ドキュメントによると、方法は

ここに画像の説明を入力

基本的に、メソッドを呼び出すだけで、返信のクロージャーに関係なく、親をウェイクアップする必要があります。

私のコードは非常にタイプ セーフで、値が nil の場合に問題外のクラッシュが発生します。何が原因でしょうか?

PS: ホスト アプリが起動された後にのみプロセスにアタッチできるため、ホスト アプリをデバッグできません。

4

2 に答える 2

2

はアプリケーションをバックグラウンドで起動するためopenParentApplication、アプリケーションの起動時に自動的に呼び出される多くのメソッドは呼び出されません。たとえば、通常の起動では、最初のビュー コントローラーはviewDidLoad, viewWillAppear,を呼び出しviewDidAppearます。openParentApplicationこれらのメソッドのいずれかが、非インターフェイス要素が依存するアプリの状態の重要な側面を構成する場合、アプリはバックグラウンドで起動されたときにクラッシュするリスクが高くなりますが、が呼び出される前に手動で起動されていた場合、アプリはクラッシュしません。.

于 2015-02-14T02:37:50.550 に答える
0

実際には、watch 拡張機能を起動した後、メイン アプリケーションをデバッグできます。Xcode で拡張機能を開始したら、[デバッグ] -> [アタッチ プロセス] -> メイン アプリに移動します。これにより、ブレークポイントとログを使用できるようになります。アプリが見つからない場合は、まずデバイスでアプリを起動してから、もう一度アタッチしてみてください。

于 2015-08-13T16:57:53.167 に答える