Удалите первые символы NSMutableString без сброса
Я использую NSMutableString для сохранения буфера результатов, который я хочу очистить, когда он достигает 9999 символов. У меня есть простой метод, который создает эту строку (добавляет NSString в его конец):
for(NSString* val in someStrArray)
{
[_resultsBuffer appendString:val];
}
и я хочу другой метод, который сбрасывает эту NSMutableString. Этот метод должен вызываться из другого потока, что означает, что строка может быть собрана в то же время, когда она будет вырезана.
В любом случае я могу "тихо" обрезать начало строки, не сбрасывая ее? (Я не могу сбросить, потому что строка может быть построена, и я могу потерять данные, если я сбросил переменную).
1 ответ
NSMutableString не является потокобезопасным. И вы не можете изменить строку, когда она находится в любой операции, такой как добавление строки с итерацией.
Вам следует дождаться завершения таких операций или сначала прекратить работу, а затем вносить изменения.
Это то же самое, что вы смотрите видео, и в то же время вам нужно переименовать видео. В этом случае вам либо нужно остановить видео, либо дождаться завершения видео.
Так что если вы можете сбрасывать данные только тогда, когда ваша строка не находится ни в одной операции.