How to silence a warning in swift How to silence a warning in swift swift swift

How to silence a warning in swift


As of 2020, Xcode 12.0, the consensus is that there is no way to achieve that.

I'll update/edit this answer if Apple add the feature.

Put it in your wish list for WWDC 2021 !


There is no general construct to silence deprecation warnings in Swift, but there is a workaround that can be applied in many cases.

Let's say you have a method getLatestImage() on class Foo which uses deprecated methods/classes.

Use @available as Daniel Thorpe described to silence all the warnings inside the method:

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

Now you would like to call the method getLatestImage() without having a deprecation warning. You can achieve that by first defining a protocol and an extension:

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

And then call the method without a deprecation warning (if foo is an instance of Foo):

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

The result is you have Swift code that uses deprecated API without any deprecation warnings.


Actually, you can suppress these warnings by using @available in the enclosing logical structure (i.e. function/type).

For example, say you have some code which uses the AddressBook framework, but you're building against iOS 9.

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

As of Xcode 7.0.1 this will prevent the inline warnings from being displayed.