How to silence a warning in swift
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.