13

問題がメモリ割り当てに関連していることは知っていますが、iOS 9、XCode 7 でのみ発生します。XCode 6.4、iOS 8.4 では、まったく問題なく動作します。iOS 9、XCode 7 では、非常に頻繁にクラッシュしてこのエラーが発生します。

malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug

助言がありますか?私はメモリの問題に取り組んでいますが、あまりにも多くのメモリの問題があったのだろうかと思います。なぜ iOS 8.4 では機能し、iOS 9 では機能しなかったのですか?

また、すべての UI が白く塗りつぶされます。ナビゲーション バーにタイトルがないのと同じように、カスタム タブバー (RDVTabBar) は表示されませんが、他のビュー コントローラーがあります (タッチ イベントに応答し、その領域をタップすると、その領域に配置されたボタンが動作します!)。

PS メモリ警告は表示されません。どちらのapplicationWillTerminate:メソッドも呼び出されていません!

更新: この問題は iPhone 5 および 4s でのみ発生することがわかりました。(非 64 ビット デバイス!)

更新 2: クラッシュが発生したときに、オブジェクトの 1 つを印刷しようとすると、デバッグ モードで同じエラーが再び発生します malloc: *** mach_vm_map(size=1048576) failed (error code=3) *** error: can't allocate region securely *** set a breakpoint in malloc_error_break to debug

- - - - - - - - - アップデート - - - - - - - - -

さて、ここで何かを見つけました: Instruments でアプリを調べたところ、iOS 8.4 で約 200 MB のメモリを占有し、驚くべきことに iOS 9.* が 1.5 GB のメモリを占有していることがわかりました!!! これは私が理解していないものです!iOS 8.4 では 1 つのアプリが 200 MB のメモリを消費し、iOS 9 では同じアプリが 1.5 GB を超えるメモリを消費します。全然理解不能!何か案が?

4

4 に答える 4

3

まあ、私は最終的に問題を発見したと思います.間違いなくメモリの問題ですが、どこを検索する必要がありました. CXAHyperlinkLabelSTTweetLabelという 2 つのサードパーティ ラベルを使用していることがわかりました。それらを削除すると、アプリは正常に動作します!! この問題は解決されましたが、なぜそれが iOS 8.4 でうまく機能し (そして今も機能し)、iOS 9.0 以降では 1.5 GB 以上のメモリを消費するのか、まだ混乱しています!! メモリに問題がある場合 (私はいくつか見つけて、まだ修正しています)、なぜ iOS 8.* で動作したのですか? したがって、このような問題を抱えている仲間への私のアドバイスとして、リンクには UITextView を使用することをお勧めします (私はそれを実行しましたが、その素晴らしい代替品です)。

于 2015-10-27T06:09:00.013 に答える
1

とても奇妙。私は非常によく似た問題を抱えていました。アプリは、最終的にクラッシュするまでメモリ消費を継続的に増加させましたが、iOS7 と iOS8 のみでした。案の定、iOS9以降では問題ありません。

[UILabel setText:text]A LOT of collectionViewCells の単純な設定が原因であることがわかりました。なんてこと?それらは弱く、非原子的でした。なんで?

Instruments : Allocationsでアプリを実行しました。Instruments が最終的にクラッシュする前に、メモリ消費を__NSStringDrawingEngine+[NSParagraphStyle _defaultWritingDirection] [UIFont fontWithName]またはその性質に関連するものに分離することができました。

とにかく、問題は、テキスト スタイル タイプ (たとえば、タイトル 1、タイトル 2、本文、キャプションなど) を使用していたことです。当時は理にかなっているように見えました。しかし、それらをシステム フォントに切り替えたところ、メモリの問題やフリーズはなくなりました。

とても奇妙。

于 2016-04-11T07:06:56.477 に答える