首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义视图扩展在发布版本中不起作用

自定义视图扩展在发布版本中不起作用
EN

Stack Overflow用户
提问于 2022-10-17 09:52:36
回答 1查看 35关注 0票数 0

我试图对仅在ios15中可用的apis进行向后兼容扩展。以下代码在Debug生成中成功运行,但在发布版中运行,但不运行。因此,我想知道是否有一些设置,我可以改变,以使这个工作在发行版的构建或任何其他方式来做到这一点。

扩展:

代码语言:javascript
复制
 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 
          }
     }
 }

运行扩展并给出错误的代码:

代码语言:javascript
复制
 NavigationView{
     ActivityView()
         .backport.badge(10)   <-- Error
 }

它给出了以下错误:

线程1: EXC_BAD_ACCESS (code=1,address=0x0)

EN

回答 1

Stack Overflow用户

发布于 2022-10-17 12:43:19

我在向后兼容性方面也有问题,但通过这个扩展解决了问题:

代码语言:javascript
复制
// MARK: - modify
/// A modify extension to handle iOS versions.
public extension View {
    func modify<Content>(@ViewBuilder _ transform: (Self) -> Content) -> Content {
        transform(self)
    }
}

用法:

代码语言:javascript
复制
TextField(title.rawValue + " username", text: $text.bound)
                .disableAutocorrection(true)
                .modify {
                    if #available(iOS 15, *) {
                        $0
                            .textInputAutocapitalization(.none)
                    } else {
                        $0
                            .autocapitalization(.none)
                    }
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74095468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档