2012-08-23 1 views
0

본문에 NSLog(@"Call me"); 인 void 함수가 있습니다.iphone 개발 : nstimer 함수 호출

나는

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES]; 

를 사용하여 10 초마다 내보기에서 전화를하지만 나는 그것이 5 반복 후 중지합니다. 그러나 그것은 무한하게 간다. 어떻게해야합니까?

+0

모든주기를 증가시키고 5에 도달하는 iVar를 생성하십시오.'[timer invalidate] ' – basvk

답변

2

1) 단위 0 내지 5

int i = 0; 

2) 타이머 기능 내부 Incement이 변수 ..

-(void) yourFunction:(NSTimer*)timer{ 
    //do your action 

    i++; 
    if(i == 5){ 
    [timer invalidate]; 
    } 
} 

3) 것으로 만들 때 전역 변수를 유지 타이머

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 
       target:self 
       selector:@selector(yourMethod:) // <== see the ':', indicates your function takes an argument 
       userInfo:nil 
       repeats:YES]; 
2

카운터를 하나 가져 와서 메소드가 호출 될 때마다 카운터를 증가시키고 5를 센 다음 아래 코드를 사용하여 타이머를 무효화해야합니다.

[timer invalidate]; 
1

타이머를 파괴하려면 현재 루프에서 [timer invalidate];

5 회를 확인하려면 변수를 유지하고 매회 카운트를 증가시켜야합니다. 5와 같으면 invalidate 메소드를 호출하십시오.

당신이 int를 선언하고 NSTimer *timer를 선언, 그렇게하는 데 필요한 모든의
1

먼저 우리는 그것을 중지 할 수 있습니다

@interface AppDelegate : UIViewController { 
    int myInt; 
    NSTimer *timer; 
} 

시작하려면 NSTimer 당신은 코드를 조금 변경해야합니다 :

를 당신이 확인을 할 수 있습니다 무효 함수 내부
timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourMethod) userInfo:nil repeats:YES]; 

확인하는 경우 5 반복 한 후 코드의 실행 :

- (void)myVoid{ 
    NSLog(@"Call Me"); 

    if (myInt == 5) { 
     [timer invalidate]; 
     timer = nil; 
    } 

    myInt++; 
} 
+0

타이머를 함수 인수로 전달하면됩니다. 타이머를 구성원으로 만들 필요가 없습니다. – Apurv

+0

@Apurv : Krishnabhadra가 이미이 대안을 보여 주었기 때문에 다른 방법을 시도했습니다. –