2010-08-10 5 views
0

classA의 @selector 태그에서 classB에있는 메소드를 어떻게 호출할까요? ??Objective-C의 @selector와 다른 호출 메소드

나는 이렇게 할 수 있습니까 ??

[tis_obj authenticate:self action:@selector([classB method]:) 
       accName:@"BOOK" User:@"User"]; 

다른 클래스 형식의 메서드를 @ selector 태그로 호출 할 수 있습니까 ?? 또는 그 메소드가 항상 같은 클래스에 있어야 하는가?

감사합니다.

답변

4

아니요. -[classB method:]을 호출하려면 authenticate : 매개 변수에 classB 인스턴스가 있어야합니다 (예 :

classB* b = [[clasB alloc] init]; 
[tis_obj authenticate:b action:@selector(method:) …]; 
self.b = b; 
[b release]; 
1

선택기는 단지 이름 일뿐입니다. 메서드 호출 [someObject foo:5]의 셀렉터는 단지 foo:입니다. 메서드 나 수신기, 이름 만 지정하는 것은 아닙니다.

1

@selector()에 전달하는 항목에는 클래스 이름이 없습니다. 셀렉터 정의는 단순히 메소드 이름, 그래서이 작동합니다 :

[tis_obj authenticate:self action:@selector(method:) 
      accName:@"BOOK" User:@"User"]; 

: 당신이 method 선택기를 사용 tis_obj을 원하는 것 같습니다

2

("방법"경우 물론 클래스에 정의됩니다) classB에 있습니다. 나는 tis_obj이 무엇인지 모르겠다. 그러나 나는 인자를 넘겨 준다. self. 아마도 당신이 정말 찾고있는 것은 :

[tis_obj authenticate:classB 
       action:@selector(method:) 
       accName:@"BOOK" 
       User:@"User"]; 

이것은 아마도 tis_obj이 한 지점에서 [classB method:someArg]의 등가을 수행한다는 것을 의미합니다.