Как завершается NSString / NSMutableString?

В Objective C у меня есть NSMutableString, и я обращаюсь к его символам, используя метод characterAtIndex: для некоторых манипуляций.

Для этого мне также нужно проверить завершающий символ примерно так:

NSMutableString *str = [[NSMutableString alloc]initWithString:@"hello"];
for(int i = 0; [str characterAtIndex:i] != '???'; i++) // ??? = terminator
     //do something

Итак, как определяет приведенный выше код, меня смущает завершающий символ, который использует NSString / NSMutableString. Это \0 как в char * или что-то еще?

Любая помощь по этому поводу приветствуется.


person Sibir    schedule 18.09.2014    source источник


Ответы (1)


Терминатора нет. Вы используете метод length.

for (NSUInteger i = 0; i < str.length; i++) {
    unichar ch = [str characterAtIndex:i];
    // do stuff
}
person rmaddy    schedule 18.09.2014
comment
Да, все сработало нормально, но я все еще не понимаю, как компилятор сам узнает, какой конец. Допустим, у нас есть строка abc, тогда как компилятор узнает, что «c» - это последний символ. Использует ли он также length строки для его определения? - person Sibir; 18.09.2014
comment
Компилятор не знает. Это функция времени выполнения, предоставляемая классом NSString. - person rmaddy; 18.09.2014