신속하게 경고를 침묵시키는 방법
많은 경고를 생성하는 코드가 있습니다 (사용되지 않는 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
'Programing' 카테고리의 다른 글
Android SQLite 데이터베이스에 테이블이 있는지 어떻게 확인합니까? (0) | 2020.09.23 |
---|---|
기본 클래스에서 파생 클래스를 동적으로 만드는 방법 (0) | 2020.09.23 |
베 지어 곡선으로 원을 만드는 방법은 무엇입니까? (0) | 2020.09.23 |
컬 설정 Content-Type이 잘못되었습니다. (0) | 2020.09.23 |
matplotlib에 플롯 창이 없습니다. (0) | 2020.09.23 |