私のアプリはシミュレータで完璧に動作します。しかし、デバイスで実行すると、アプリがクラッシュしてエラーが表示されます:
"malloc:*オブジェクト0x17415d0c0のエラー:フリーリストからデキューされた無効なポインター* malloc_error_breakにブレークポイントを設定してデバッグ";
デバッグするためにmalloc_error_break
でブレークポイントを検索して設定しましたが、まだ問題を見つけることができません。プロジェクトのスキームを変更しようとしましたが、ゾンビオブジェクトを有効にしましたが、答えが見つかりません。
楽器も使ってみますが苦手です。
IOS 8.3のXcode 8でこのエラーを修正しました。展開ターゲットを8.3から8.0に変更しました。 Xcode 8への移行後にエラーが表示され、デバイスがiOS 8の制御下で動作する場合は、一時的な判断である可能性があります。
UPD:Xcode 8.1ベータ版がこのエラーを修正しました。
Xcode 8でこの同じ問題を修正しました。iOS10互換ビルドの準備、推奨Swift Migration 2.3に更新、iOS9およびiOS10では完全に実行されますが、iOS8.4ではクラッシュします。変更を元に戻しましたコードとMain.storyboardを使用して、Xcode 7.3でiOS8に同じコンテンツをビルドすると、問題が解決しました。
私もこの奇妙なエラーに出会いました、グーグルでググったところ、それは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は怒りません。
だからジェネリック型関数をチェックして、それがスーパークラスとまったく同じであることを確認してください