1

私は数か月間アプリに取り組んできましたが、ここ 1 週間か 2 週間で奇妙なバグが発生しました。アプリケーションを長時間 (20 ~ 30 分) 使用した後、カスタム ラベル (UILabel に基づく) の多くが正しくレンダリングされなくなります (空白に見えるものもあります)。興味深いことに、この状況でキーボードを起動すると、次のように表示されます。

ここに画像の説明を入力

ここ数週間、コードベースのさまざまな部分に多くの微調整を試みましたが、役に立ちませんでした。ここの誰かが以前に同様の問題に出くわしたり、どこを探すべきかについていくつかのアイデアを持っていることを望んでいました解決策。

カスタム ラベル内で多くの CoreGraphics 呼び出しを使用して、かなり複雑な注釈付き文字列をレンダリングし、別のスレッドのバックグラウンドでサーバーとの間でかなりの量のトラフィックをやり取りしています。メモリに関しては、ARC を使用しており、メモリ内に常に約 5 ~ 10Mb の生データを保持していますが、他の何かが大量のメモリを消費しているとは思えません。

どこを見ればよいかについてのアドバイスは大歓迎です。

4

2 に答える 2

2

別のスレッドでUI呼び出しを行うというテーマで、別のスレッドがUI呼び出しを行う方法を示すために、このコードを追加するかもしれないと思いました。

dispatch_sync(dispatch_get_main_queue(), ^{
    // Put your UI code here
});

これにより、実行ループ処理中にコードがメインスレッドで実行されるようになります。

于 2012-07-24T17:16:34.210 に答える
2

まあ、これは正確な問題ではありませんが、同様の非常に奇妙なものがウィンドウに表示されます。メイン スレッド以外からの UIKit のメッセージングまで追跡されました。「assert([NSThread isMainThread]);」をどんどん追加していきました。画面に絵を描いていると思われる場所で、確かに、有罪の当事者を見つけました。

于 2012-07-24T17:11:41.570 に答える