2017-01-25 45 views
0

我使用NSMutableString來保存結果緩衝區,當它達到9999個字符時,我想要刷新它。 我有建立這個字符串(追加的NSString的結尾)一個簡單的方法:刪除NSMutableString的第一個字符,而無需重置

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

,我想這刷新此的NSMutableString的另一種方法。這個方法應該可以從另一個線程中調用,這意味着該字符串可以在它將要被剪切的同一時間內被創建。

任何方式我可以「默默」切割字符串的開始而不重置它? (我不能重置,因爲可能會建立字符串,如果我重置變量,我可能會丟失數據)。

+0

我不明白你的Q.由於'NSMutableString'不是線程安全的,所以你必須添加某種序列化。 –

+0

如果在「靜默」切割「_resultsBuffer」變量時鎖定這個變量就足夠了,這樣多個線程就可以操縱它了嗎? –

回答

1

NSMutableString不是線程安全的。而且在任何操作中,如迭代字符串時,您都不能修改字符串。

您應該等到這些操作完成或先停止操作然後再進行修改。

就像你正在看視頻一樣,你需要重新命名視頻。在這種情況下,您需要停止播放視頻或等待視頻完成。

所以如果你只能在你的字符串沒有進行任何操作時刷新數據。

相關問題