TextKit スタックに接続された UITextView があります。カスタム NSTextStorage サブクラスと、標準の NSLayoutManager + NSTextContainer インスタンスです。
大きなドキュメント (最大 80kb、最大 200 個の URL リンク) を編集しているときに、「リンク化」プロセス中にアプリのメイン スレッドが 10 秒以上フリーズします: URL 検出 + ハイライト。
Instrumentsセッションの後、メソッド「NSTextStorage.processEditing()」が〜800回呼び出されていることがわかりました-上記のシナリオの場合-。
記録として、UITextView インスタンスの検出器は次のように設定されています。
self.dataDetectorTypes = UIDataDetectorTypeAll;
最初にテストしたのは、カスタム サブクラスの代わりに Apple の NSTextStorage クラスを使用することです。結果はまったく同じでした。processEditing は深刻なボトルネックです。
このプロセスをスピードアップする方法を探しています。どんな提案でも大歓迎です!
前もって感謝します!!