sto correndo il seguente codice nella funzione viewDidLoad di una vaniglia iPad un'unica vista app:Perché a volte NSLog stampa ottale per caratteri ucode?
/*
* Print the string. A lot.
*/
for (int i = 0; i < 300; i++) {
NSLog(@"%d\n", i);
NSLog(@"⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒ \n");
}
L'output è simile al seguente:
2013-02-04 20:17:49.718 testplay[59585:c07] 228
2013-02-04 20:17:49.718 testplay[59585:c07] ⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒
2013-02-04 20:17:49.719 testplay[59585:c07] 229
2013-02-04 20:17:49.719 testplay[59585:c07] ⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒
2013-02-04 20:17:49.719 testplay[59585:c07] 230
2013-02-04 20:17:49.720 testplay[59585:c07] ⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒
2013-02-04 20:17:49.720 testplay[59585:c07] 231
2013-02-04 20:17:49.720 testplay[59585:c07] ⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ \342\212\221 ⊒
2013-02-04 20:17:49.723 testplay[59585:c07] 232
2013-02-04 20:17:49.724 testplay[59585:c07] ⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒
L'ottale avviene quasi sempre lo stesso carattere e il singhiozzo si verifica casualmente circa 3 volte per corsa.
Mentre è relativamente innocuo in NSLog(), implica che i caratteri Unicode possono essere trattati in modo irregolare a un certo livello. Se c'è una storia per questo comportamento o qualche risorsa che potrei guardare sarebbe grandiosa.
[addendum: rimosso il riferimento a come mi sono imbattuto in questo problema. Capire come e perché NSLog ottiene una lettura corrotto di un carattere Unicode è la mia speranza qui]
Il comportamento di NSLog è interessante (e riproducibile). Tuttavia, la modifica del codice per confrontare le iterazioni non causa stringhe non corrispondenti. Sarebbe utile se tu pubblicassi il metodo di confronto che in realtà causa i tuoi problemi ('confronta:', 'isEqualToString:', 'compare: options:', etc) –