Programing

신속하게 경고를 침묵시키는 방법

lottogame 2020. 9. 23. 08:04
반응형

신속하게 경고를 침묵시키는 방법


많은 경고를 생성하는 코드가 있습니다 (사용되지 않는 API).

clang *을 사용하여 할 수 있습니다.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    ...
#pragma clang diagnostic pop

그러나 이것은 신속하게 작동하지 않습니다.

신속하게 수행하는 방법?

참고 : 경고를 전역 적으로 또는 파일 전체에서 비활성화하고 싶지 않고 소스 코드의 특정 부분에서 특정 경고를 비활성화하기 만하면됩니다.

편집 : 내 메모가 충분히 명확하지 않은 것 같습니다. 조건부 컴파일을 원하지 않습니다 (예상 중복에 대한 제안 된 답변). 새 API를 사용하지 않고 경고를 무음으로 설정하고 싶습니다.


2019 년 Xcode 11.0에서 합의는이를 달성 할 방법이 없다는 것입니다.

Apple이 기능을 추가하면이 답변을 업데이트 / 편집하겠습니다.

WWDC 2020의 위시리스트에 넣으십시오!


실제로 둘러싸는 논리 구조 (예 : 함수 / 유형) 를 사용하여 이러한 경고를 억제 수 있습니다@available .

예를 들어 AddressBook 프레임 워크를 사용하는 코드가 있지만 iOS 9에 대해 빌드한다고 가정 해 보겠습니다.

@available(iOS, deprecated: 9.0)
func addressBookStatus() -> ABAuthorizationStatus {
    return ABAddressBookGetAuthorizationStatus()
}

Xcode 7.0.1부터는 인라인 경고가 표시되지 않습니다.


Swift에서 사용 중단 경고를 침묵시키는 일반적인 구조는 없지만 많은 경우에 적용 할 수있는 해결 방법이 있습니다 .

사용되지 않는 메서드 / 클래스를 사용 getLatestImage()하는 클래스에 메서드가 있다고 가정 해 보겠습니다 Foo.

메서드 내부@available모든 경고를 침묵시키기 위해 Daniel Thorpe가 설명한대로 사용 합니다.

@available(iOS, deprecated: 9.0)
func getLatestImage() -> UIImage? {
    ...
}

이제 지원 중단 경고없이 메서드 호출 하려고 합니다getLatestImage() . 먼저 프로토콜과 확장을 정의하여이를 달성 할 수 있습니다.

private protocol GetLatestImage {
    func getLatestImage() -> UIImage?
}
extension Foo: GetLatestImage {}

그런 다음 사용 중단 경고없이 메서드를 호출합니다 ( foo의 인스턴스 인 경우 Foo).

(foo as GetLatestImage).getLatestImage() // no deprecation warning

그 결과 폐기 경고없이 폐기 된 API를 사용하는 Swift 코드가 있습니다.

참고 URL : https://stackoverflow.com/questions/31540446/how-to-silence-a-warning-in-swift

반응형