Problema de performance de desplazamiento con UItextView con gran NSAttributedString

Estoy trabajando en el editor de text para una aplicación. Estoy usando UITextView

Vea el código de ejemplo para cargar la vista de text.

// Read text from file (around 300k - 400k words) NSError *error = nil; NSString *contentOfFile = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"17254" ofType:@"txt"] encoding:NSUTF8StringEncoding error:&error]; // Attributes for text UIFont *font = [UIFont fontWithName:@"Baskerville" size:36.0f]; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.alignment = NSTextAlignmentJustified; NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:font, NSFontAttributeName, [UIColor blackColor], NSForegroundColorAttributeName, paragraphStyle, NSParagraphStyleAttributeName, nil]; // Create attributed string NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:contentOfFile attributes:attributes]; // Assign to text view self.textView.attributedText = attributedString; 

El tamaño del text es de alnetworkingedor de 400k palabras.

Estoy enfrentando los siguientes problemas.

  • El desplazamiento del text se vuelve demasiado lento cuando me desploop hacia abajo y la aplicación se bloquea debido a problemas de memory. Lo que creo que iOS está guardando la image de text representada en su memory cuando la vista de text se desplaza hacia abajo, pero cuando me desploop hacia arriba, suelta la memory.

  • Si toco "Seleccionar todo", se necesita demasiado time para seleccionar el text y después de la selección de text, el desplazamiento se vuelve pobre y algunas veces la aplicación se bloquea debido a problemas de memory porque aumenta la memory. Creo que iOS genera la image de text completo (como si fuera visible para el usuario) en su memory y luego selecciona el text completo y conserva su image hasta que finaliza la selección. Una vez finalizada la selección, la memory retenida por la aplicación cae.

La otra forma de mostrar el text grande es utilizar las vistas de text múltiples y asignar el text a la vista de text visible solo como UITableView, pero esto boostá la complejidad ya que tengo que volver a contar la cantidad de vistas de text requeridas en cada textChange delegate call of layoutManager of UItextView .

Cualquier organismo tiene idea de cómo mostrar un text atribuido de gran tamaño en UITextView con un mejor performance.

Cualquier conjetura sobre cómo funciona la aplicación iPages, ya que muestra text cuando el área está en el range visible.

No debe cargar text completo directamente. Debe cargar el text que es el doble que la capacidad de vista de text.

Ahora haga un seguimiento del evento de desplazamiento y modifique la cadena dinámicamente.