2009-09-25 2 views
12

나는이 [Class method]와 같은 호출을 받았고 Class는 이 "method"메시지에 응답하지 않을 수도 있다는 경고를 받았습니다.특정 라인의 xcode에서 경고를 비활성화하는 방법은 무엇입니까?

"method"메시지는 실제로 존재하지 않지만 내 코드는 알려지지 않은 메시지를 사용하여 (forwardingTargetForSelector를 사용하여) (forwardingTargetForSelector를 사용하여) 잡아서 잘 실행되고 그런 식으로 실행되도록 빌드됩니다. 어떻게이 성가신 경고를 숨길 수 있습니까?

답변

16

같은 뭔가 존재하지 않을 수도있는 메소드를 호출하고 있다는 것을 직접적으로 귀하의 의도로 판단 할 수 있습니다. 이것은 경고를 표시하지 않거나 메서드를 가짜로 만드는 것보다 더 명확한 방법입니다.

+0

감사합니다. 각 호출마다 선택기를 만들어야하는 경우 효율성이 떨어질 것입니다. 내 모든 @selector를 선언하지 않는 한. – CodeFlakes

+1

성능 차이는 거의 감지 할 수 없습니다. 걱정이라면 프로파일을 만드십시오. 조기에 최적화하지 마십시오. –

+2

'performSelector'는 인수 유형과 반환 유형이 모두 객체 인 메소드에서만 작동합니다. 그리고 오직 0, 1, 또는 2 개의 인수를 가진 사람 – user102008

3

해당 메서드를 선언하는 범주를 정의 할 수 있습니다. 편집 할 때 정의에 범위가 있으면 경고를 피할 수 있습니다.

id myClone = [anObject performSelector:@selector(copy)]; 

선언하면 객체에 가능-구현되지 않은 메시지를 보낼 의도, 당신은 당신이 실패를 잡을 거라고 알고 있다면, 당신은 호출을 사용해야합니다

@interface MyClass (ShutUpTheCompilerMethods) 
- (void)method; 
@end 

... 

[MyClass method] //no warning here