在不重置的情况下删除 NSMutableString 的第一个字符

Remove the first characters of NSMutableString without resetting

我使用 NSMutableString 来保存一个结果缓冲区,当它达到 9999 个字符时我想刷新它。 我有一个构建此字符串的简单方法(在其末尾附加一个 NSString):

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

并且我想要另一种刷新此 NSMutableString 的方法。此方法应该能够从另一个线程调用,这意味着可以在将要剪切的同时构建字符串。

有什么方法可以 "silently" 切断字符串的开头而不重置它? (我无法重置,因为可能会构建字符串,如果我重置变量,我可能会丢失数据)。

NSMutableString 不是线程安全的。并且当字符串处于任何操作(例如使用迭代追加字符串)时,您不能修改字符串。

您应该等到此类操作完成或先停止操作再进行修改。

这就像你在看视频一样,同时你需要重命名视频。在这种情况下,您需要停止视频或等待视频完成。

所以如果你只有当你的字符串没有在任何操作中才能刷新数据。