2010-12-29 4 views
2

I는 입력 변수를하는 방법이 있고 난 내가 몇 가지 오류 내 코드를 가지고 아이디어를 만들려고 불행하게도 때 NSTimer 를 사용하여이 방법을 예약하는 데 필요한 다음과 같다 :Nstimer 변수

내 방법 :

-(void)movelabel:(UILabel *)label { 
} 

나는 다음과 같은 사용하여 내 예약합니다,

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(movelabel:myLbabeName) userInfo:nil repeats:YES]; 

을하지만 내가 가진 다음과 같은 오류 :

error: expected ':' before ')' token 

다른 경우 (i는 다음과 같은 타이머를 호출하고있어 입력 변수가없는 방법의 경우 :

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

감사

당신은 추가 할 필요가

답변

2

scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:에 지정한 선택자는 임의의 인수를 사용하지 않습니다. 매개 변수가없는 선택 자이거나 (NSTimer *) 유형의 단일 매개 변수가있는 선택자 여야합니다.

myLbabeName 매개 변수로 moveLabel:을 직접 호출 할 수 없습니다.

는이 같은 중간 방법으로 userInfo 사전을 사용할 수 있습니다

timerRef = [NSTimer scheduledTimerWithTimeInterval:0.1 
           target:self 
           selector:@selector(timerMovelabel:) 
           userInfo:[NSDictionary dictionaryWithObject:myLbabeName 
                    forKey:@"name"] 
           repeats:YES]; 

- (void)timerMovelabel:(NSTimer *)timer { 
    [self movelabel:[[timer userInfo] objectForKey:@"name"]]; 
} 

EDIT (timerRefNSTimer 클래스 변수)

타이머를 중지하려면 해당 타이머를 참조하고 계속 호출하십시오. [timerRef invalidate]

+0

I haven ' t는 사용자 정보로 시도했다. 나는 이것을 시도 할 것이지만 훌륭한 대답 일 것이다. Thanks Jilouc 나는 사용자 정보를 어떻게 사용하는지 새로운 것을 얻었다. 그렇지 않으면 어딘가에 물어볼 필요가있다. –

+0

Thx 많이 Jilouc 그것은 gr8입니다; –

+0

이 경우 타이머를 멈추는 방법 ??????? –

0

':'후 매개 변수, 즉

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(movelabel:myLbabeName:) userInfo:nil repeats:YES]; 
+0

매개 변수 뒤에 ":"를 추가해야하는 이유를 설명해주십시오. in objc 매개 변수는 ":"로 채워지고 ":"기호를 추가 할 필요가 없습니다. 실제로 그는 id를 제외한 선택자를 가진 매개 변수를 사용할 수없고 단지 @selector (movelabel :) 만 사용해야합니다 ... 추가 매개 변수 없음 ... –

+0

이걸 만들려고하지만 불행히도 시간 오류가 발생했습니다 –

+0

Objective-C의 문법은 –

-1

매개 변수로 ur lable을 전달할 수 없습니다 ... 선택기와 함께 매개 변수로 전달할 수 없습니다. ID 또는 매개 변수없이 될 것입니다 하나 개의 매개 변수 ... 당신은 당신의 첫 번째를 사용하는 경우 다음 당신은 타이머와 액션 해상력 얻을 수있는

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

또는

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

를 사용할 필요가 여기

될 것입니다

- (void) moveLable :(id)sender { 
} 

보낸 사람이 될 것입니다.

어쨌든 lable을 매개 변수로 사용해야하는 이유는 무엇입니까? .h 파일로 선언하면 직접 lable에 액세스 할 수 있습니다.