2012-04-25 1 views
2

안녕하세요, 저는 아이폰 앱에서 12 시부 터 0 시까 지 계산해야하는 타이머가 있습니다! 하지만 시작될 때 이렇게 계산됩니다. 11시 58분 11시 56분 11시 54분 11시 52분Xcode : 모든 틱에서 타이머가 2 초로 계산되는 이유는 무엇입니까?

는 모든 진드기에 2 초 기대하고있다.

tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder]; 
timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tidklick) userInfo:nil repeats:YES]; 

이 메소드 tidklick이다 :

시작 버튼 코드의 코드 ..

-(void) tidklick 
{ 

tiden -= 1; 
sekunder = tiden % 60; 
minuter= (tiden - sekunder)/60; 
tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder]; 

} 

이것은 처음의 코드가

int tiden=720; 
int sekunder; 
int minuter; 

이것은 메서드에 넣은 NSLog에 나타납니다 ...

2012-04-26 06:41:38.562 Matte [288:f803] tiden: 719 
sekunder: 59 
2012-04-26 06:41:38.607 Matte [288:f803] tiden: 718 
sekunder: 58 
2012-04-26 06:41:39.562 Matte[288:f803] tiden: 717 
sekunder: 57 
2012-04-26 06:41:39.607 Matte[288:f803] tiden: 716 
    sekunder: 56 
2012-04-26 06:41:40.562 Matte [288:f803] tiden: 715 
sekunder: 55 
2012-04-26 06:41:40.607 Matte [288:f803] tiden: 714 
sekunder: 54 

새로운 이름과 새로운 방법으로 새 ​​타이머를 만들려고했지만 2가 여전히 계산됩니다. 버튼과 물건이 화면에 있다는 사실과 관련이 있습니까? 일부 메모리 오류입니까?

미리 감사드립니다.

+0

[엑스 코드가 항상 2를 첨가하는 대신 1]의 중복 가능성 (http://stackoverflow.com/questions/10320817/xcode-is-adding-2-instead-of -1-all-the-time) – Jim

+0

메모리 문제 일 수 있습니까? – Mangy92

+0

어디에서 타이머 방법을 넣었습니까? 그것은 아마도 잘못된 장소에있을 것입니다. – lukaivicev

답변

5

논리가 정상적으로 보입니다. 타이머를 두 번 만들지 않습니까?

+0

예, 있습니다 : OI는 어쨌든 다른 타이머를 찾을 수 없습니다 : S – Mangy92

+0

omg, 이것은 나를 미치게 만듭니다. OI는 모르지만 버튼과 라벨이 많이 있다는 사실과 관련이 있습니다 그 화면에? : S – Mangy92

1

때로는 xcode에서 실행하면 작업 속도가 느려질 수 있습니다. 앞에서 언급했듯이 논리는 괜찮아 보입니다. xcode가 아닌 전화로 실행할 수 있습니다. 이것은 시뮬레이터에서도 작동 할 수 있습니다. 그것에 대해 잘 모르겠다.

당신의 코드는 문제가 없습니다
+0

내 전화로 바로 실행할 수 있으려면 99 달러를 지불해야합니까? – Mangy92

+0

@ user1344659 짧은 답변 예, 긴 대답은 없습니다. "정상적인"구성을 가정하면 프로그램 비용을 지불해야하지만 jailbroken 장치에 대해서는 몇 가지 해결 방법이 있습니다. –

+0

좋아, jailbroken tho 아니야! 나는 여러 가지 방법으로 시도해 보았지만, 2 초의 eack time을 여전히 계산하고있다 : S – Mangy92

2

, 로그인을 시도 먼저

는 2 초마다 계산하거나 2 초마다

-(void) tidklick 
{ 

tiden -= 1; 
sekunder = tiden % 60; 
// add log here 
NSLog(@"tiden: %d\n sekunder: %d",tiden,sekunder); 

minuter= (tiden - sekunder)/60; 
tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder]; 

} 

에서 UI를 새로 그리고 당신은 실행하려고 할 수 있는지 여부를 알 수 배경 스레드 타이머

[self performSelectorInBackground:@selector(schedule) withObject:nil]; 

- (void) schedule { 
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; 
NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 

timer = [[NSTimer scheduledTimerWithTimeInterval:1.0f 
               target:self 
            selector:@selector(run:) 
            userInfo:nil 
            repeats:YES] 
    retain]; 

[runLoop run]; 
[pool release]; 
} 


-(void) run:(id) sender{ 

// you should handle the thread-safe 
tiden -= 1; 
sekunder = tiden % 60; 
// add log here 
NSLog(@"tiden: %d\n sekunder: %d",tiden,sekunder); 
minuter= (tiden - sekunder)/60; 
NSString *test =[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder]; 

[label performSelectorOnMainThread:@selector(setText:) withObject:test waitUntilDone:YES]; 
} 
+0

로그에 아무것도 없다. : O – Mangy92

+0

나는 타이머를 무효로하는 버튼을 눌렀을 때 타이머가 정상적으로 카운트된다는 것을 알아 차렸다. 그리고 메뉴 -> 다시 시작하면 틱당 3 초가된다. 그리고 무효화되면, 타이머는 틱당 2 초를 다시 계산합니다. 다시 시작 = 틱당 4 회 계산, 무효화 = 틱당 3 초 계산 ... 등등 ... 다른 타이머가 시작되면 숨겨진 타이머가 시작되고 무효화되지 않는 것 같습니다. – Mangy92

관련 문제