Fuente de apariencia UILabel y fuente de cadena atribuida

En mi aplicación, tengo una fuente personalizada global aplicada a todas las etiquetas de esta manera:

UIFont *font = [UIFont fontWithName:kMyFontName size:15.0]; 
[[UILabel appearance] setFont:font];

Esto funciona bien Sin embargo, en algunos casos quiero poder especificar una fuente diferente para una región específica de una cadena UILabel.

Entonces tengo algo como esto:

NSString *string = @"Foo Bar Baz";
UIFont *boldFont = [UIFont fontWithName:kMyBoldFontName size:15.0]; 
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];
[attrString setAttributes:@{ NSFontAttributeName: boldFont } range:NSMakeRange(0, 3)];
self.myLabel.attributedText = attrString;

Sin embargo, esto no parece funcionar. Espero que el "Foo" esté en negrita, pero toda la cadena solo tiene la fuente predeterminada. Es como si la fuente en negrita no se aplicara en absoluto y se sobrescribiera con la fuente establecida en el proxy de apariencia UILabel.

Cuando elimino la línea de apariencia UILabel, funciona bien (puedo ver parte de la cadena en negrita). Básicamente quiero tener mi fuente personalizada aplicada a la etiqueta pero una fuente separada aplicada a una región diferente de la cadena. Normalmente esto funciona bien con cadenas atribuidas, pero por alguna razón, configurar la fuente de apariencia UILabel desactiva esta funcionalidad (o eso parece).

Resultados previstos: "Foo Bar Baz "Resultados reales: "Foo Bar Baz"

Si elimino el[[UILabel appearance] setFont:] línea entonces funciona:

"Foo Bar Baz "

(pero la fuente personalizada no está establecida en el resto de la cadena).

Entonces, mi pregunta es: ¿hay alguna forma de especificar una sola fuente para usar como la aplicación predeterminada en toda la aplicación, pero aún así poder anularla parcialmente usando cadenas atribuidas?

Además, si alguien puede explicarme por qué esto no funciona, lo agradecería.

Respuestas a la pregunta(3)

Su respuesta a la pregunta