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

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

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам