web-dev-qa-db-ja.com

Xcode-私のアプリがクラッシュし、エラーは「空きリストからデキューされた無効なポインター***デバッグするmalloc_error_breakにブレークポイントを設定します」です

私のアプリはシミュレータで完璧に動作します。しかし、デバイスで実行すると、アプリがクラッシュしてエラーが表示されます:

"malloc:*オブジェクト0x17415d0c0のエラー:フリーリストからデキューされた無効なポインター* malloc_error_breakにブレークポイントを設定してデバッグ";

デバッグするためにmalloc_error_breakでブレークポイントを検索して設定しましたが、まだ問題を見つけることができません。プロジェクトのスキームを変更しようとしましたが、ゾンビオブジェクトを有効にしましたが、答えが見つかりません。

楽器も使ってみますが苦手です。

14
Nijat2018

IOS 8.3のXcode 8でこのエラーを修正しました。展開ターゲットを8.3から8.0に変更しました。 Xcode 8への移行後にエラーが表示され、デバイスがiOS 8の制御下で動作する場合は、一時的な判断である可能性があります。

UPD:Xcode 8.1ベータ版がこのエラーを修正しました。

13
Andy Sander

Xcode 8でこの同じ問題を修正しました。iOS10互換ビルドの準備、推奨Swift Migration 2.3に更新、iOS9およびiOS10では完全に実行されますが、iOS8.4ではクラッシュします。変更を元に戻しましたコードとMain.storyboardを使用して、Xcode 7.3でiOS8に同じコンテンツをビルドすると、問題が解決しました。

2
Dani.Rangelov

私もこの奇妙なエラーに出会いました、グーグルでググったところ、それはSwiftのバグだと言われ、修正されていません。行ごとにデバッグし、解決策を見つけます。

このエラーが表示される理由

EditRecordVCにはジェネリック型の関数func update<RO>(operation: RO) where RO : RealmOperation, RO.R == EditRecordVC.Rがあります

そのサブクラスConflictedRecordEditVCで、関数をオーバーライドし、updateを入力します。Xcodeは、関数override func update<RO>(record: Record?, operation: RO?) where RO : RealmOperation, RO.R == Record全体を完成させ、うまくコンパイルするのに役立ちます。

コードを実行します。オーバーライドされた関数が実行された後、このエラーが表示され、Xcodeがランダムな行で停止します。この関数が原因であることが誰にもわかりません。

私は1行ずつデバッグし、ジェネリック型をoverride func update<RO>(operation: RO) where RO : RealmOperation, RO.R == Recordに変更する必要があることを確認します。すべてが正常に機能します。

を誤って追加したときに忘れてしまい、Xcodeは怒りません。

だからジェネリック型関数をチェックして、それがスーパークラスとまったく同じであることを確認してください

0
ygweric