2012-03-21 6 views
2

저는 멀티 뷰 앱을 만들고 있습니다. 뷰 중 하나가 테이블 뷰입니다. 각 셀에는 스톱워치가 있습니다. NSTimer를 스톱워치로 사용할 계획입니다. 사용자가보기를 전환했다가 나중에 다시 돌아올 때 타이머가 제대로 작동하려면 멀티 스레딩을 구현해야합니까? 나는 내 연구를했지만 대부분의 튜토리얼은 단일보기에서 하나의 NSTimer를 다룹니다. 나는 타이머가 실행되는 동안 사용자가 인터페이스, 내비게이션 등을 사용하는 것과 같은 다른 일을 할 수있게하고 싶다. 다른 게시판 Placing an NSTimer in a separate thread 누군가가 타이머에 대해 다른 runloop이 필요하다고 말했다. 내 경우에는 각 타이머에 대해 하나의 런 루프가 필요합니까? 그것은 권위가 있습니까? 성능상의 단점이 있습니까?iOS : 동일한보기를 사용하는 여러 개의 NSTimer 인스턴스 - 멀티 스레딩을 사용해야합니까?

고맙습니다.

+0

여러개의 스톱워치가 동시에 작동합니까? –

+0

NSTimers는 주 스레드 (UI)에 영향을 미치지 않습니다. 따라서 원하는만큼 많은 NSTimers를 사용할 수 있습니다. – basvk

+0

@KyleRosenbluth 예 복수의 스톱워치가 동시에 실행됩니다. 각각은 서로 다른 활동을 추적합니다. –

답변

2

하나의 실행 루프가 잘되어야합니다. 인터페이스는 여전히 반응 형입니다.

타이머가 정확한지 보장하지 않습니다. 그것들은 같은 루프에 다른 것들이 얼마나 많은지에 영향을받습니다. 타이머를 사용하여 디스플레이를 업데이트하지만 실제로 시간을 측정하지 않는 것이 좋습니다. 스톱워치를 시작할 때 NSDate를 설정하고 디스플레이 타이머가 디스플레이를 업데이트 할 때마다 현재 날짜와 시작 날짜를 비교하십시오.

디스플레이를 업데이트하는 데 NSTimer 만 사용해야하므로 모든 스톱워치 대신 하나의 일반 스톱워치를 업데이트하는 일반 디스플레이 업데이트 타이머를 사용할 수 있습니까?

+0

답장을 보내 주셔서 감사합니다 @ Danricreek! 나는 오늘 밤과 다음날에 이것을 시행하기 위해 노력할 것입니다. 난 당신이 게시 계속됩니다. 나는 모든 스톱워치를 업데이트하는 1 타이머의 아이디어를 좋아한다. 타이머가 작동 할 때마다 모든 스톱워치를 반복 할 수 있으며 상태가 == 실행중인 경우 디스플레이를 업데이트 할 수 있습니다. 그것은 실제로 좋은 제안입니다. 그러나 임씨는 정확성에 대해 혼란 스러웠습니다. 시간을 추적하는 데 사용하지 말라고하셨습니다. 그러나 스톱 워치가 정확하게 작동합니다. 타이머가 작동하면 스톱워치를 1 초씩 증가시켜야합니다. 이 문제를 어떻게 해결할 수 있습니까? 감사합니다. –

+0

방금 ​​NSDate가 의미하는 바를 재확인했습니다. 이는 앱에서 이미 구현 한 것입니다. 각 스톱워치에 대한 개체가 발생했으며 START_TIME 속성이 있습니다. 현재 시간과 START_TIME을 (를) 사용하여 TIMEINTERVAL을 (를) 쉽게 컴퓨터 할 수 있습니다. 감사 !! –

+0

Dancreek 같은 매력 작품. 고맙습니다 !! –