Показаны сообщения с ярлыком NSMutableString. Показать все сообщения
Показаны сообщения с ярлыком NSMutableString. Показать все сообщения

3 мая 2014 г.

NSMutableString - пример

Класс 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;
}

Результат выполнения: