2011-02-25 2 views
5

빠른 질문입니다, 다른 개체에 대한 메서드 인 @selector를 지정하는 방법이 있습니까? 현재 로컬 메소드를 사용하여 원격 메소드를 호출하여 해결책을 찾지 못했지만 어색한 느낌입니다.다른 객체의 메서드에 @selector를 지정 했습니까?

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

. NSTimerscheduledTimerWithTimeInterval:target:selector:userInfo:repeats: 방법의 target 부를위한 무슨

- (void)timerLocation { 
    [[self dataModel] startUpdatingLocation]; 
} 

답변

11

. (예 : 대상으로 호출 할 개체와 선택기로 개체 메서드의 이름을 지정합니다.)

+4

여기에서 확장 된 생각은 선택기가 함수 포인터가 아닙니다. 메시지 이름입니다. 특정 클래스에 묶여 있지 않습니다. 그래서 타겟과 셀렉터를 모두 전달해야합니다. 오타를 피하기 위해 일반적으로 컴파일러에서 @selector()가 시스템의 어딘가에 있는지 확인하기 위해 -Wselector ("선언되지 않은 선택기"경고)를 전달하는 것이 좋습니다 (선택자가 클래스에 유효하지는 않습니다. 전달됨, 그것이 존재한다는 것). 이 경우 일반적으로 대상 객체의 헤더를 #include해야합니다. –

+0

Upvote +1 많은 도움이됩니다. 감사. :) – iLearner

2
[NSTimer scheduledTimerWithTimeInterval:10 target:someOtherObject selector:@selector(timerLocation) userInfo:nil repeats:YES]; 
관련 문제