You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Default symbols (without any extensions) are not enclosed via available attribute. Thus there are a lot of cases where custom UIImage's initializer public convenience init(_ symbol: SPSafeSymbol) will crash app by force-unwrapping the system image that doesn't exists at current iOS.
For example: I want to display on iOS 13 a symbol named pills, that is available starting from iOS 14.
I can do this without any error: let image = UIImage(.pills)
And if we look into the Pills (file SPSafeSymbol+Pills) extension we will see that pills doesn't enclose via available attribute.
extension SPSafeSymbol {
public static var pills: Pills { .init(name: "pills") }
open class Pills: SPSafeSymbol {
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
open var circle: SPSafeSymbol { ext(.start.circle) }
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
open var circleFill: SPSafeSymbol { ext(.start.circle.fill) }
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
open var fill: SPSafeSymbol { ext(.start.fill) }
}
}
The text was updated successfully, but these errors were encountered:
Hey!
Seems you have set the wrong accessibility. For example:
.photo - @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *), but it available in iOS 13+
.trash - @available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *) but it available in iOS 13+
.tray.andArrowDownFill -
And more others, which have the top level @available iOS 15 and therefore the properties of the class cannot be accessed
Details
Describe the Bug
Default symbols (without any extensions) are not enclosed via available attribute. Thus there are a lot of cases where custom UIImage's initializer
public convenience init(_ symbol: SPSafeSymbol)
will crash app by force-unwrapping the system image that doesn't exists at current iOS.For example: I want to display on iOS 13 a symbol named pills, that is available starting from iOS 14.
I can do this without any error:
let image = UIImage(.pills)
And if we look into the Pills (file SPSafeSymbol+Pills) extension we will see that pills doesn't enclose via available attribute.
The text was updated successfully, but these errors were encountered: