我试图对仅在ios15中可用的apis进行向后兼容扩展。以下代码在Debug生成中成功运行,但在发布版中运行,但不运行。因此,我想知道是否有一些设置,我可以改变,以使这个工作在发行版的构建或任何其他方式来做到这一点。
扩展:
public struct Backport<Content> {
public let content: Content
public init(_ content: Content) {
self.content = content
}
}
extension View {
var backport: Backport<Self> { Backport(self) }
}
extension Backport where Content: View {
@ViewBuilder func badge(_ count: Int) -> some View {
if #available(iOS 15, *) {
content.badge(count)
} else {
content
}
}
}运行扩展并给出错误的代码:
NavigationView{
ActivityView()
.backport.badge(10) <-- Error
}它给出了以下错误:
线程1: EXC_BAD_ACCESS (code=1,address=0x0)
发布于 2022-10-17 12:43:19
我在向后兼容性方面也有问题,但通过这个扩展解决了问题:
// MARK: - modify
/// A modify extension to handle iOS versions.
public extension View {
func modify<Content>(@ViewBuilder _ transform: (Self) -> Content) -> Content {
transform(self)
}
}用法:
TextField(title.rawValue + " username", text: $text.bound)
.disableAutocorrection(true)
.modify {
if #available(iOS 15, *) {
$0
.textInputAutocapitalization(.none)
} else {
$0
.autocapitalization(.none)
}
}https://stackoverflow.com/questions/74095468
复制相似问题