2017-01-25 14 views
0

NSMutableString을 사용하여 결과 버퍼를 저장합니다. 결과 버퍼는 9999 자에 도달하면 플러시 할 수 있습니다. 나는이 문자열을 빌드 (그 끝에있는 NSString을 추가) 간단한 방법이 있습니다재설정하지 않고 NSMutableString의 첫 번째 문자 제거

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

을하고 나는이 인 NSMutableString를 플러시 다른 방법을 원한다. 이 메서드는 다른 스레드에서 호출 할 수 있어야합니다. 즉 문자열을 잘라내는 것과 동시에 만들 수 있습니다.

어떤 방법 으로든 자동으로 문자열의 시작 부분을 다시 설정하지 않고자를 수 있습니까? (문자열을 구성 할 수 없기 때문에 재설정 할 수 없으며 변수를 재설정하면 데이터가 손실 될 수 있습니다).

+0

Q를 이해하지 못합니다. NSMutableString은 스레드로부터 안전하지 않으므로 어쨌든 일종의 직렬화를 추가해야합니다. –

+0

'_resultsBuffer' 변수를 여러 스레드가 조작 할 수 있도록 "자동으로"자를 때 잠그면 충분합니까? –

답변

1

NSMutableString은 스레드로부터 안전하지 않습니다. 그리고 iteration이있는 문자열을 추가하는 것과 같은 연산을 수행하는 경우 문자열을 수정할 수 없습니다.

이러한 작업이 완료 될 때까지 기다리거나 작업을 먼저 중지 한 다음 수정해야합니다.

비디오를보고 있고 비디오의 이름을 바꾸어야하는 것과 같습니다. 이 경우 비디오를 중지하거나 비디오 완료를 기다려야합니다.

문자열이 작동하지 않는 경우에만 데이터를 플러시 할 수 있다면.