Удалить первые символы NSMutableString без сброса

Я использую NSMutableString для сохранения буфера результатов, который я хочу очистить, когда он достигает 9999 символов. У меня есть простой метод, который создает эту строку (добавляет NSString в конец):

for(NSString* val in someStrArray)
{
    [_resultsBuffer appendString:val];
}

и мне нужен другой метод, который сбрасывает эту NSMutableString. Этот метод должен вызываться из другого потока, что означает, что строка может быть построена в то же время, когда она будет вырезана.

В любом случае я могу «молча» обрезать начало строки, не сбрасывая ее? (Я не могу сбросить, потому что строка может быть построена, и я могу потерять данные, если я сброшу переменную).


person benams    schedule 25.01.2017    source источник
comment
Я не понимаю вашего вопроса. Поскольку NSMutableString не является потокобезопасным, вам все равно придется добавить какую-то сериализацию.   -  person Amin Negm-Awad    schedule 25.01.2017
comment
Будет ли достаточно, если вы заблокируете переменную _resultsBuffer при ее молчаливом вырезании, чтобы ею могли манипулировать несколько потоков?   -  person Christoph P.    schedule 25.01.2017


Ответы (1)


NSMutableString не является потокобезопасным. И вы не можете изменить строку, когда она находится в любой операции, такой как добавление строки с итерацией.

Вы должны дождаться завершения таких операций или сначала остановить работу, а затем вносить изменения.

Это так же, как вы смотрите видео, и в то же время вам нужно переименовать видео. В этом случае нужно либо остановить видео, либо дождаться завершения видео.

Итак, если вы можете сбрасывать данные только тогда, когда ваша строка не находится ни в какой операции.

person Sangram Shivankar    schedule 25.01.2017