2014-07-24 3 views
1

Swift에서 Xcode6 Beta 3을 사용하는 iOS8 프로젝트에서 작업하고 있는데 한 줄에 변수를 인쇄 할 수 있지만 그 변수의 내용이 다음으로 대체됩니다. 쓰레기처럼 보입니다. 이 두 연속 라인은 그 사이에 다른 코드가 절대적으로 없습니다.Swift Output이 변수를 덮어 씁니다.

println("Data segment 0: \(dataSegments[0])") 
println("Data segment 0: \(dataSegments[0])") 

(NSData 배열의 요소가됩니다). 첫 번째는 예상 한 것을 인쇄하지만 두 번째는 다른 것을 인쇄합니다. 내가 함수를 호출로 되돌릴 경우

또한,있는 나는 데이터를 얻을 :

println("Data segment 0: \(getCharacteristicData()[0])") 
println("Data segment 0: \(getCharacteristicData()[0])") 

첫 번째는 내가 예상 정확히 무엇을 (그것이 첫 번째 블록의 첫 번째 줄에 같은 일을 출력 않습니다 두 번째로 getCharacteristicData()가 잘못된 액세스 오류로 인해 충돌합니다. 다시 말하지만,이 라인들은 연속적이며 그 사이에 다른 코드는 실행되지 않습니다.

저는 지금까지이 스타일 출력을 아무런 문제없이 몇 주 동안 사용해 왔습니다. 어떤 아이디어가이 원인 일 수 있습니까? Swift와 관련된 버그입니까, 아니면 내 데이터를 파괴 할만한 이유가 있습니까?

수정 : 베타 4로 업데이트되었습니다. getCharacteristicData()를 사용할 때 더 이상 잘못된 액세스를 얻지는 않지만 코드의 첫 번째 블록에는 여전히 동일한 문제가 있습니다.

업데이트 : 내 코드의 다른 곳에서 별도의 메모리 할당 해제 문제가 발생했으며 println()의 변수를 사용하여 할당 된 메모리를 덮어 쓰게되었습니다.

+2

Xcode6 Beta 4 (최신 릴리스)로 업데이트하고 다시 시도하십시오. – drewag

+0

정말 연속적인 라인입니까, 아니면 연속적인 _calls_ to println입니까? 데이터가 실제로 변경되었을 수 있습니다. 또한, println은 쓰레드에 안전하지 않다는 경고를 받는다. 배경 스레드에서이 작업을 수행하면 이상한 일이 발생합니다. – matt

+0

그들은 연속적인 선이고, 나는 실을 꿰기로 일하고 있지 않다. 모두 전경에서 달리고 있어요. – Matt

답변

0

예를 들어 그 선들이 서로의 직후에 있습니까?

그렇지 않으면; 처음 몇 베타 버전에서 신속한 array immutability was broken이라는 사실을 만났을 가능성이 있습니다. 베타 4로 업그레이드하십시오.

+0

그러나 배열 불변성은 베타 3에서 수정되었으며, 이는 그가 사용하는 것입니다. 베타 4로 업데이트하면 어떻게 바뀔 수 있습니까? – matt

+0

고마워, 저는 현재 베타 4로 업그레이드 중이며 그게 무엇을하는지 보겠습니다. – Matt

관련 문제