Класс NSString используется для хранения строк, но в нем присутствует небольшой недостаток. Мы не можем изменять строку которая хранится в экземпляре этого класса. С этой проблемой очень хорошо справляется класс NSMutableString. У него намного больше возможностей обработки строк в отличии от NSString.
Рассмотрим небольшой пример:
Создадим экземпляр класса NSMutableString.
NSMutableString *stringOne = [NSMutableString initWithCapacity: 15];
NSMutableString *stringTwo = [[NSMutableString alloc] initWithCapacity: 30];
В первом и втором примере мы создаем экземпляр класса с выделением под строку определенное количество символов (15 и 30). Второй пример характерен тем, что, мы сами контролируем процесс выделения и очистки памяти. Что произойдет если мы к выделенному количеству символов добавим еще некое количество и случайно выйдем за пределы выделенного количества символов? Ничего не произойдет. Приложение будет и дальше работать также само. Этот параметр носит характер оптимизации для компилятора по выделении памяти и значение этого параметра никак не влияет на длину строки.
По-практикуем:
Результат выполнения:
По-практикуем:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSMutableString *mtStr = [[NSMutableString alloc] initWithCapacity:15];
[mtStr appendString:@"— Будете у нас, на Колыме – милости просим!"];
NSLog(@"%@", mtStr);
[mtStr appendFormat:@" — Нет,%@", @" уж лучше вы к нам!"];
NSLog(@"%@", mtStr);
NSRange strRng = [mtStr rangeOfString:@" — Нет,"];
[mtStr deleteCharactersInRange:strRng];
NSLog(@"%@", mtStr);
//[mtStr insertString:@" - Да" atIndex:43];
//NSLog(@"%@", mtStr);
[mtStr insertString:@" - Да" atIndex:strRng.location];
NSLog(@"%@", mtStr);
[mtStr setString:@"Новая строка"];
NSLog(@"%@", mtStr);
}
return 0;
}
Результат выполнения:
0 коментарі:
Отправить комментарий