¿Por qué UITextView combina attributes del text atribuido anteriormente establecido?

Mientras jugaba con NSAttributedString, me encontré con un extraño comportamiento de UITextView. Di que tengo dos properties:

@property (weak, nonatomic) IBOutlet UILabel *label; @property (weak, nonatomic) IBOutlet UITextView *textView; 

En el controller propietario de estas properties, tengo el siguiente código:

 NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:20.], NSForegroundColorAttributeName: [UIColor networkingColor]}; NSAttributedString *as = [[NSAttributedString alloc] initWithString:@"Hello there!" attributes:attributes]; NSMutableAttributedString *mas = [[NSMutableAttributedString alloc] initWithString:@"Hello where?" attributes:nil]; [mas addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(3, 5)]; self.label.attributedText = as; self.label.attributedText = mas; self.textView.attributedText = as; self.textView.attributedText = mas; 

Cuando se ejecuta en el simulador, la label se ve (er, usa tu imaginación) de la siguiente manera, usando la fuente pnetworkingeterminada del sistema:

 <black>Hel</black><yellow>lo wh</yellow><black>ere?</black> 

La vista de text se ve de la siguiente manera, usando la fuente del sistema en tamaño 20.0:

 <networking>Hel</networking><yellow>lo wh</yellow><networking>ere?</networking> 

Parece que la vista de text está combinando los attributes de las dos cadenas atribuidas. Encuentro que este es un resultado sorprendente y esperaba que se comportara como la label.

Sospecho que esto es un error. Si no es así, ¿cómo y por qué UITextView trata el text atribuido de manera diferente que UILabel?

(XCode Versión 4.5.1)

Estoy bastante seguro de que esto no es un error. La documentation dice claramente:

asignar un valor nuevo [a un text attributedText la vista de text] actualiza los valores en las properties de fuente, textColor y textAlineación para que reflejen la información de estilo que comienza en la location 0 en la cadena atribuida.

Por lo tanto, las properties que no establezca explícitamente se henetworkingarán de las properties generales de la vista de text, que fueron establecidas por el text atribuido anterior.

Por lo tanto, la forma correcta de hacer lo que intenta hacer es restablecer la fuente, textColor y textAlignment antes de realizar la segunda asignación:

 self.tv.attributedText = as; // reset everything self.tv.text = nil; self.tv.font = nil; self.tv.textColor = nil; self.tv.textAlignment = NSTextAlignmentLeft; // and now... lo and behold ... self.tv.attributedText = mas; 

Presenté un informe de errores con Apple. Volvieron y dijeron que el problema se abordó con iOS 7 beta 1. Verificado como fijo.