2010-07-17 4 views
0

전 비슷한 질문을 한 적이 있습니다. 그러나 이것은 다릅니다. 이제 각 버튼의 TouchDown 이벤트에서 두 개의 타이머가 작동합니다. TouchUpInside 이벤트에서 각 타이머에 [pressTimer invalidate]pressTimer = nil을 알리는 코드가 있습니다. 두 번째 타이머를 추가 한 이후로 지금 발생하는 문제는 선택기가 트리거되어 (따라서 버튼을 놓고 TouchUpInside 이벤트가 트리거 될 때) 앱이 충돌하고 Not recognized [NSCFTimer -invalidate] 또는 이와 유사한 결과가 발생합니다. 버튼은 타이머가 작동 할 때까지 정상적으로 작동하고 심지어 손가락을 놓을 때까지 충돌이 발생하지 않습니다. 내 생각에 TouchUpInside 이벤트는 유효하지 않은/트리거 된 타이머를 무효화하려고합니다. 왜냐하면 타이머가 계속 실행되는 동안 문제가 없기 때문입니다. 왜 두 번째 타이머를 추가하기 전에 이런 일이 발생하지 않았는지 궁금합니다. 일시적인 문제는 타이머의 부분을 repeating:YES으로 설정하는 것입니다.이 이론은 유효하지 않은/트리거 된 타이머를 무효화 할 수 없다는 이론을 뒷받침합니다. 어떤 제안?iPhone NSTimer 무효화 관련 문제가 있습니다.

* 보너스 : 관련 메모에 사람들이 iTunes Connect에 나타나기 전에 얼마나 많은 크래시를 받아야합니까?

+0

귀하의 질문에서 "또는 이와 비슷한 부분"이 걱정됩니다. 정확히 * 뱉어내는 것은 무엇입니까? :) – Kalle

답변

0

한편 은 아무런 도움이되지 않습니다. nil 과제는 설정자를 사용할 때 retain 속성 (예 :)에서만 개체를 ​​해제합니다. (이것은 실제로 수행합니다! [self setTimer:nil]) 당신이 자신을 잘못 인용하고 세터를 사용했다면

는 는하지만 그렇다하더라도, NSTimer 인스턴스는 공개 할 필요가 없다, 그것은 단지 invalidate 라 할 필요가

. 귀하의 "종류의 인용"오류가 발생해서는 안됩니다. 당신 이론으로

:이 상황에서 releaseinvalidate을 읽을 수 있습니다 - 당신은 너무 자주 할 수 없어 ... 요구 사항을 무효화

수동 상태는 그것이 동일한 스레드에서 호출 할 수 있습니다 설치 한 후에는 아무 것도 충돌 할 이유가 없습니다.

관련 문제