4

TextKit スタックに接続された UITextView があります。カスタム NSTextStorage サブクラスと、標準の NSLayoutManager + NSTextContainer インスタンスです。

大きなドキュメント (最大 80kb、最大 200 個の URL リンク) を編集しているときに、「リンク化」プロセス中にアプリのメイン スレッドが 10 秒以上フリーズします: URL 検出 + ハイライト。

Instrumentsセッションの後、メソッド「NSTextStorage.processEditing()」が〜800回呼び出されていることがわかりました-上記のシナリオの場合-。

記録として、UITextView インスタンスの検出器は次のように設定されています。

self.dataDetectorTypes = UIDataDetectorTypeAll;

最初にテストしたのは、カスタム サブクラスの代わりに Apple の NSTextStorage クラスを使用することです。結果はまったく同じでした。processEditing は深刻なボトルネックです。

このプロセスをスピードアップする方法を探しています。どんな提案でも大歓迎です!

前もって感謝します!!

4

0 に答える 0