2014-06-05 4 views
0

정적 메서드 호출에 NSInvocation을 사용할 수 있습니까?정적 메서드 NSInvocation

우리는 NSInvocation을 사용하여 비공개 방법에 대한 단위 테스트에서 메서드 호출을 단순화했습니다.

이것은 우리가 NSInvocation에 개체와 적절한 데이터를 제공하는 우리의 인스턴스 메서드에 유용합니다. 그러나 정적 메서드에서도 동일한 작업을 수행 할 수 있습니까?

+1

에는 "정적 메서드"Objective-에서이 없습니다 기음. 런타임에 동적으로 디스패치되고 컴파일 타임에 정적으로 조회되지 않는 "클래스 메서드"가 있습니다. – user102008

답변

1

예, 가능합니다. 클래스를 가정 MyClass하고 당신의 방법은 당신이 사용할 수 +(void)myClassMethod:(id)sender; 다음과 같습니다 만들 때

NSMethodSignature *signature = [MyClass methodSignatureForSelector:@selector(myClassMethod:)]; 

그런 다음 당신은 당신의 NSInvocationNSMethodSignature를 제공 할 수

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; 
+1

클래스 메소드의'target'은 클래스 객체 여야한다는 것에주의하십시오. 'invocation.target = [MyClass class]'와 같은 것. –