programing

Xcode에서 사용되지 않는 경고 억제

elecom 2023. 4. 13. 20:31
반응형

Xcode에서 사용되지 않는 경고 억제

모든 SDK가 떠돌고 있기 때문에 여러 SDK 및 플랫폼을 위한 구축이 용이합니다.그러나 3.2에서 3.0으로 바운스할 때, 심지어 2.x로 바운스할 때 변경되거나 대체된 메서드와 관련된 권장되지 않는 경고가 자주 표시됩니다.

warning: 'UIKeyboardBoundsUserInfoKey' is deprecated.

이전 OS와의 호환성을 유지하고 싶기 때문에 빌드 시 '노이즈'를 제거하기 위해 노력하고 있습니다.이러한 경고를 끄거나 비활성화할 수 있는 방법이 있습니까?

아직 @samiq 포스트에 코멘트를 추가할 수 없기 때문에 확대하려고 합니다.사용되지 않는 것을 사용하는 함수/메서드 앞에 언급된 지시문을 입력합니다.그런 다음 함수 종료 정의 후 이전 설정을 복원할 수 있습니다.

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- (void) methodUsingDeprecatedStuff {
    //use deprecated stuff
}
#pragma GCC diagnostic pop

Clang은 @manicaesar 포스트의 "restore" 단계를 초기 경고 상태와 무관하게 만드는 훌륭한 기능을 제공합니다.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- (void) methodUsingDeprecatedStuff {
    //use deprecated stuff
}
#pragma clang diagnostic pop

Clang 매뉴얼을 인용하려면:

Clang에서는 GCC의 플러그마에 의해 제공되는 모든 기능과 더불어 현재 경고 상태를 푸시 및 팝할 수도 있습니다.다른 사용자가 어떤 경고 플래그를 작성하는지 모르기 때문에 다른 사용자가 컴파일할 헤더 파일을 작성할 때 특히 유용합니다.

해라-Wno-deprecated-declarations또는 Xcode의 대응하는 설정,GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS(프로팁: 빌드 설정에 "사용되지 않음"을 입력하면 이 경고에 대한 특정 설정을 찾을 수 있습니다).

Xcode의 현재 버전(예: Xcode 9.2):

여기에 이미지 설명 입력


Xcode의 이전 버전(예: Xcode 2.x, 3.x):

여기에 이미지 설명 입력

오래된 OS를 지원해야 하지만 경고에 주의를 기울여야 하기 때문에 좀 더 깔끔한 방법을 원했습니다.Mozilla 코드에서 영감을 얻어 정리했습니다.

#define SILENCE_DEPRECATION(expr)                                   \
do {                                                                \
_Pragma("clang diagnostic push")                                    \
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")   \
expr;                                                               \
_Pragma("clang diagnostic pop")                                     \
} while(0)

#define SILENCE_IOS7_DEPRECATION(expr) SILENCE_DEPRECATION(expr)
#define SILENCE_IOS8_DEPRECATION(expr) SILENCE_DEPRECATION(expr)

이를 통해 다음 작업을 수행할 수 있습니다.

SILENCE_IOS7_DEPRECATION(return [self sizeWithFont:font constrainedToSize:size]);

또, 다음의 코드 블록에서도 동작합니다.

SILENCE_IOS7_DEPRECATION(
    view = [[MKPolylineView alloc] initWithPolyline:self];
    view.lineWidth = self.lineWidth;
    view.strokeColor = self.color;
);

또한 iOS 7 이전 디바이스의 지원을 중단할 경우 코드를 쉽게 검색하여 권장되지 않는 수정 용도를 찾을 수 있습니다.

또한 다음을 사용하여 파일당 경고를 억제할 수 있습니다.

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

결국엔 모든 경고를 한 번, 그리고 함께 억누르는 것보다 조금 더 좋은 방법이 될 거야... 결국엔 네가 뭘 위해 그런 짓을 하는지 알게 될 거야.

경고 Implementing decommended 메서드 또는 Implementing decommended 클래스를 정지하려면 다음 명령을 사용합니다.


#clang 진단 푸시#pragma clang 진단이 무시되었습니다.-Wrecommended-Implements"// 코드#diagma clang 진단 팝

설정에서 " " " 를 .Deprecated Functions.

여기에 이미지 설명 입력

만약 당신이 코드 조각에 있는 모든 종류의 추천을 포괄적으로 체크하고 싶다면.다음과 같이 -Wrecommended 플래그를 사용하십시오.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
- (void) methodUsingDeprecatedStuff {
    //use deprecated stuff
}
#pragma clang diagnostic pop

이슈 탐색기에 필터를 추가합니다.

여기에 이미지 설명 입력

타사 헤더 파일의 경고를 비활성화하려면 파일 맨 위에 다음 줄을 추가하십시오.

#pragma clang system_header

언급URL : https://stackoverflow.com/questions/2622017/suppressing-deprecated-warnings-in-xcode

반응형