I have a piece of code which is generating lots of warnings (deprecated API)
Using clang* I could do
#pragma clang diagnostic push
#pragma clang dia
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.