Класс 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 коментарі:
Отправить комментарий