2013-04-22 2 views
3

1 또는 2 초마다 인스턴스 메소드를 호출해야하는 앱이 있습니다. 또는 viewWillAppear : 내가있는 viewDidLoad에서지연 후 셀렉터를 수행하려면 한 번만 호출하십시오.

[self performSelector:@selector(getMatchListWS) withObject:nil afterDelay:1.0]; 

를 배치하면 이제, 방법 getMatchListWS 한 번만 뷰가 나타나거나 부하라고한다. 하지만 사용자가 뷰가 보이지 않거나 언로드되지 않아도 뷰를 계속 볼 때도 메서드를 계속 호출해야합니다. 그래서 performSelector 메서드를 추가하여 뷰를 언로드하지 않고도 매 초마다 호출 할 수있는 올바른 위치 또는 위임 메서드는 무엇입니까? 백그라운드 나 메인 스레드에서 뭔가를해야합니까? 미리 감사드립니다 !!

답변

11

은 다음과 같이 될 것이다 : 여러 이벤트가 해고에 문제가 발생하지 않도록

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(getMatchListWS:) userInfo:nil repeats:YES]; 

, 당신의 viewDidLoad에 넣어. viewWillAppear 또는 viewDidAppear에 넣고 modalViewController를 밀거나 표시하면 이런 일이 발생할 수 있습니다.

+4

** ** 한 번만 반복 ** ** 반복 ** ** **. 문서에서 :'repeats 예인 경우, 타이머는 무효화 될 때까지 반복적으로 일정을 변경합니다. '아니오'일 경우, 타이머는 작동 후 무효화됩니다. ' – Peres

7

재키 보이의 대답은 당신의 일을 완성시킬 것입니다. 또 다른 해결책은 (는 performSelector 방법을 사용하는 방법에 대한 예리한 인 경우) 그래서

-(void) getMatchListWS { 
//Get Match List here 

[self performSelector:@selector(getMatchListWS) withObject:nil afterDelay:1.0]; 
} 

주처럼 메소드 정의에서 같은 줄을 추가하는 것입니다 : 당신은 여전히 ​​때보기로드 한 번 메소드를 호출 할 필요가 있습니다.

+0

은 이렇게 선언해야합니까? - (void) getMatchListWS : (NSTimer *) dt {} 그리고이 방법이라고? [self performSelector : @selector (getMatchListWS :) withObject : nil afterDelay : 1.0]; –

1

통화가 지연되고 있습니다. 그러면 1 초가 지나면 메서드를 호출하는 것입니다. 당신이해야 할 일은 특정 시간 간격 후에 당신의 메소드를 반복적으로 호출하도록 타이머를 설정하는 것입니다.

관련 문제