最近Xcode 7に更新し、iPhoneをiOS 9にアップグレードしました。iOS8とXcode 6の最新バージョンで完全に機能するiOSアプリを開発してリリースしました。
IOS 9サポート用にアプリを更新するプロセスを実行しようとすると、私は困惑させられた最もばかげた奇妙なエラーを受け取ります。
Xcodeを使用してすべての構文修正を自動的に実行し、アプリが正しくビルドされるようになりました。最初は問題なく動作します。
WebViewを備えたView Controllerに接続するボタンがあります。このView Controllerは、画像、Webサイト、またはYouTubeからのビデオを表示するリンクをロードします。コンテンツはいつものように完璧にロードされます。ただし、プログラムはクラッシュしてシミュレーター(および私のiPhone)をリブートし、「戻る」ボタン(ナビゲーション・スタック上にある)をクリックすると、ロック画面に移動します。
Xcodeでは、次のメッセージが表示されます。
XPC接続が中断されました。システムアプリがないため終了します。
私はアプリにFlurry分析を統合していますが、それが問題かどうかはわかりません。
この問題を修正するにはどうすればよいですか? XPC接続を検索しても、私のような問題は返されないようです。 XPC接続とは何なのかさえわかりませんが、どうしてこれが私のアプリにあるのでしょうか?
編集:私は問題の回避策を見つけました。私は本当にそれが修正だと言うことはできません。
Trueに設定されている場合、self.navigationController?.popViewControllerAnimatedメソッドの使用中にクラッシュが発生していました。たまたまこれをfalseに設定すると、クラッシュが停止します(現在、移行はひどく見えます)。
これがなぜ機能するのかはわかりませんが、混乱を招くだけです。
問題は私にとってもストーリーボードにありました。新しいプロジェクトを作成し、ビューをレイアウトしましたが、すべてがうまく機能しているように見えました。ストーリーボードのソースでこれらのいくつかの行を見つけました(ストーリーボードを右クリックし、ビューとして->ソースコードを選択します)。これらは作業バージョンと壊れたバージョンでは一般的ではありませんでした。
<keyCommands>
<keyCommand/>
</keyCommands>
これらの行が何をするのか、またはストーリーボードファイルにどのように忍び込むのかはわかりませんが、それらはアプリを非常に激しくクラッシュさせ、電話を再起動する必要がありました。メインプロジェクトからこれらの行を削除し、すべてが再び機能しました。
このエラーは、ループを繰り返し実行することで発生する可能性があります。私の場合は、カウント変数をリセットする「for」ループでした。 NSLogをループに追加するとすぐに、明らかでした。
私はちょうど同じ問題に直面しました。それがあなたに役立つかどうかはわかりませんが、それはストーリーボードから来ていると思います:
私の場合、問題はUITextViewから発生しています。内部のデフォルトのテキストを変更しようとするたびに、このエラーが発生します。デフォルトのテキストをそのままにするか、空のままにすると、アプリは正常に動作します。 IBOutletを作成し、プログラムでテキストを変更することもできます。
他のUI要素を試しましたが、UITextViewのみがこの問題を抱えているようです。
私はまったく同じエラーに苦しんでいます。排除のプロセスを通じて、私はそれがどのクラスとも関係がなく、ストーリーボードと関係があることを確立しました。幸いなことに、私は定期的にバックアップコピーを保管し、ストーリーボードを比較して、自分がしたことを確立しようとしましたが、明らかなものは何も見つかりませんでした。バックアップコピーは正常に機能し、コントローラークラス(変更を含む障害のあるコピーから)をバックアップコピーにコピーすることができ、それらは正常に機能しました。
おそらくストーリーボードにバグがあると思います。
-layoutSubviewsメソッドにサブビューを配置すると、同じエラーメッセージが表示されます。
-(void)layoutSubviews
{
[super layoutSubviews];
[self populateByImageViews];
}
レイアウトプロセスの無限サイクルを引き起こし、アプリをクラッシュさせます。この場所にサブビューを配置しないでください!
ストーリーボードのビューの1つからテキストビューを削除すると、私の場合のエラーが削除されます。
UIChangedのvalueChanged:メソッドでは、同じ問題が発生したため、valueChanged:内のコードをメインスレッドで実行するようにし、問題を解決しました。
@IBAction func valueChanged(sender: AnyObject) {
dispatch_async(dispatch_get_main_queue(), {
//code
}
}
QLPreviewControllerを使用すると、この問題に直面します。以下のエラーメッセージ
XPC connection interrupted
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
XPCはOS Xプロセス間通信を意味するため、これで問題を解決できると思います。
dispatch_async(dispatch_get_main_queue(), ^{
// do what you want to do.
});