Я запускаю следующий код в функции viewDidLoad приложения одноразового просмотра iPad:
/*
* Print the string. A lot.
*/
for (int i = 0; i < 300; i++) {
NSLog(@"%d\n", i);
NSLog(@"⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒ \n");
}
Результат выглядит следующим образом:
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] ⊢ ⊣ ⊥ ⊻ ⊼ ⊂ ⊃ ⊑ ⊒
Октал почти всегда встречается на одном и том же символе, и икота происходит случайным образом примерно 3 раза за каждый ход.
Несмотря на то, что в NSLog() он относительно безвреден, это означает, что символы Unicode могут обрабатываться нерегулярно на некотором уровне. Если есть история этого поведения или какой-то ресурс, на который я мог бы смотреть, это было бы здорово.
[добавление: удалена ссылка на то, как я столкнулся с этой проблемой. Понимание того, почему и как NSLog получает поврежденное чтение символа юникода, я надеюсь здесь.]