2010-05-17 3 views
8

Ben Gottlieb's question과 비슷하게, 나는 저를 괴롭 히고있는 몇 가지 폐지 된 전화를 가지고 있습니다. 회선별로 경고를 표시하지 않을 수 있습니까? 예를 들면 다음과 같습니다.라인 특정 XCode 컴파일러 경고 표시하지 않음

if([[UIApplication sharedApplication] 
    respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning 
} 

내가 신경 쓰는 건 그게 전부입니다. 모두 지원 중단 경고를 해제하고 싶지 않습니다. 나는 또한 suppress specific warnings by file과 같은 것을하지 않을 것입니다.

컴파일러에서 경고를 표시하더라도 특정 줄을 괜찮게 플래그를 지정하려는 경우가 몇 가지 있습니다. 본질적으로 문제가 처리되었다는 사실을 내 팀에 알리고 계속해서 같은 라인에 대해 도청당하는 것을 중단하고 싶습니다.

답변

5

Vincent Gable은 흥미로운 솔루션을 게시했습니다. 한마디로 :

@protocol UIApplicationDeprecatedMethods 
- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated; 
@end 

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    id<UIApplicationDeprecatedMethods> app = [UIApplication sharedApplication]; 
    [app setStatusBarHidden:YES animated:NO]; 
} 
+0

쿨. 내 생각에 비추천 경고를 피하는 데 효과적이다. 그러나보다 추상적 인 질문은 여전히 ​​열려 있습니다. Xcode에서 특정 경고를 억제하는 방법이 있습니까? – MrHen

+1

불행히도, 대부분 전부 또는 아무것도 아닙니다. '#pragma GCC diagnostic ... '(http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html)을 사용하면 파일 단위로 특정 경고를 파일 당 빌드 설정보다 확실한 방법입니다. GCC 4.2 이상이 필요하며 번역 단위 맨 위에 있어야합니다. –

+1

@ matt-b 참고하시기 바랍니다. 더 나은 방법으로 비추천 경고를 처리 할 수 ​​있다고 생각합니다. UIApplication을 (id)로 변환하면 오류가 사라집니다. 이것이 부적절한 이유를 생각해 낼 수 있습니까? – MrHen

0
if([[UIApplication sharedApplication] 
    respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) { 

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} else { 
    [(id)[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 
} 
관련 문제