You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 14报错:存储属性不可用@available标记潜在不可用(Flutter项目)

解决Flutter项目Xcode 14中「Stored properties cannot be marked potentially unavailable with '@available'」错误
  • 升级依赖包版本
    多数第三方包会针对Xcode 14的编译规则更新修复这个问题。去pub.dev查对应依赖包的最新版本,修改项目pubspec.yaml里的版本号后,执行flutter pub get更新。如果是Git托管的依赖,切换到官方最新的分支或tag即可。

  • 临时修改依赖包源码
    如果依赖包暂未更新,可手动修改本地Pod源码:

    1. 找到项目ios/Pods/[对应依赖包名称]目录下的iOS端代码文件
    2. 将标记了@available(iOS 14.0, *)的存储属性,改成计算属性的写法,把可用性标记绑定到属性的get/set方法上。比如:
      原错误代码:
      @available(iOS 14.0, *)
      var someProperty: SomeType?
      
      修改为:
      private var _someProperty: SomeType?
      @available(iOS 14.0, *)
      var someProperty: SomeType? {
          get { _someProperty }
          set { _someProperty = newValue }
      }
      

    注意:这种修改是临时的,下次执行pod install或flutter pub get会被覆盖,优先等官方发布修复版本。

  • 降级Xcode版本(不推荐)
    若上述方法都无法解决,可暂时降级到Xcode 13.x版本,该版本允许存储属性使用@available标记,能绕过编译错误。但长期来看建议适配Xcode 14的新规则。

  • 适配多版本的条件编译(针对自定义依赖包)
    如果你是该依赖包的维护者,可以用条件编译兼容不同Xcode版本:

    #if swift(>=5.7) && compiler(>=5.7)
    // Xcode 14+ 兼容写法
    private var _someProperty: SomeType?
    @available(iOS 14.0, *)
    var someProperty: SomeType? {
        get { _someProperty }
        set { _someProperty = newValue }
    }
    #else
    // Xcode 13及以下写法
    @available(iOS 14.0, *)
    var someProperty: SomeType?
    #endif
    

内容的提问来源于stack exchange,提问作者Umutcan Bağdu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:40:35