많은 경고를 생성하는 코드가 있습니다 (사용되지 않는 API).
clang *을 사용하여 할 수 있습니다.
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
...
#pragma clang diagnostic pop
그러나 이것은 신속하게 작동하지 않습니다.
신속하게 수행하는 방법?
참고 : 경고를 전역 적으로 또는 파일 전체에서 비활성화하고 싶지 않고 소스 코드의 특정 부분에서 특정 경고를 비활성화하기 만하면됩니다.
편집 : 내 메모가 충분히 명확하지 않은 것 같습니다. 조건부 컴파일을 원하지 않습니다 (추상 된 중복에 대한 제안 된 답변). 새 API를 사용하지 않고 경고를 무음으로 설정하고 싶습니다.
답변
2020 년부터 Xcode 12.0에서는이를 달성 할 방법이 없다는 것이 합의되었습니다.
Apple이 기능을 추가하면이 답변을 업데이트 / 편집하겠습니다.
WWDC 2021 위시리스트에 넣으십시오!
답변
Swift에서 deprecation 경고를 침묵시키는 일반적인 구조는 없지만 많은 경우에 적용 할 수있는 해결 방법이 있습니다 .
사용되지 않는 메서드 / 클래스를 사용 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 코드가 있습니다.
답변
실제로 둘러싸는 논리 구조 (예 : 함수 / 유형) 를 사용하여 이러한 경고를 억제 할 수 있습니다@available
.
예를 들어 AddressBook 프레임 워크를 사용하는 코드가 있지만 iOS 9에 대해 빌드한다고 가정 해 보겠습니다.
@available(iOS, deprecated: 9.0)
func addressBookStatus() -> ABAuthorizationStatus {
return ABAddressBookGetAuthorizationStatus()
}
Xcode 7.0.1부터는 인라인 경고가 표시되지 않습니다.
답변
지금은 Swift에서 사용 중단 경고를 무음으로 설정할 방법이 없지만 기술적으로는 헤더 파일을 편집하여 특정 기호에 대해이를 수행 할 수 있습니다.
- 더 이상 사용되지 않는 기호 이름 복사
- 선택
File
>Open Quickly
-
기호를 붙여넣고
Enter
빨리 열기 상자에서 Swift 아이콘이 비활성화되어 있는지 확인하십시오.
-
선택
File
>Show in Finder
- 필요한 경우 편집 할 수 있도록 파일 권한 변경
- 기호에 대한 지원 중단 매크로를 편집하십시오. 참조를 위해 주변 API를 참조하십시오. 예 : 교체 :
__OSX_AVAILABLE_BUT_DEPRECATED (__ MAC_10_6, __MAC_10_10, __IPHONE_3_0, __IPHONE_8_0)
와
__OSX_AVAILABLE_STARTING (__ MAC_10_6, __IPHONE_3_0)
이제 아무것도 할 수없는 덜 산만 한 경고가 하나 있습니다.
알아, 더럽다. 그러나 현재 SDK에서 사용할 수 있는 대체 API 가 없는 경우 안전해야합니다. 새 버전의 Xcode가 나오면 변경 사항을 덮어 쓰고 경고가 다시 표시됩니다. 그런 다음 새 SDK 및 OS를 테스트하여 더 이상 사용되지 않는 API를 계속 사용할 수 있고 대체되지 않았는지 확인할 수 있습니다.
단점이 있으면 의견을 말하십시오.