V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tsohgdivil
V2EX  ›  Apple

SwiftUI 新推出的 Observation 框架

  •  
  •   tsohgdivil · 21 天前 · 1472 次点击

    WWDC 2023 上推出的 Observation 框架

    使用 @Observable @State 和 @Bindable 三个宏来定义 Swift 的数据模型

    目的是简化代码及优化性能。

    https://developer.apple.com/documentation/swiftui/migrating-from-the-observable-object-protocol-to-the-observable-macro

    但是我一看,好家伙最低支持版本 iOS 17.0

    所以这里就有两个问题:

    1. 为什么苹果不做向后兼容?这个技术上很难吗?
    2. 有着如此高的版本要求,你会使用 Observation 框架吗?还是说保持原本的 ObservableObject ?
    16 条回复    2024-04-10 17:46:05 +08:00
    owen666
        1
    owen666  
       21 天前   ❤️ 1
    1. 技术上不难。但是苹果并不希望你使用旧版,因为你使用旧版,就不会有升级硬件的冲动。
    2. 目前还没有使用。因为还需要支持旧版。大概明后年会支持。因为我一般只会支持最近的 2-3 个版本。
    这个和 ObservableObject 相比,优势是具有更细的粒度。可以减少不必要的界面刷新。
    iClass
        2
    iClass  
       21 天前 via Android
    苹果的一切从 iOS 18.0 开始变得有意义。因为今年才真正有 Ai 。
    mycang
        3
    mycang  
       21 天前
    @iClass 现在的 ai 通用场景其实并不好用。
    iClass
        4
    iClass  
       21 天前 via Android
    今年是苹果公司拨乱反正的元年。期待明后年上线有益于人类的产品。Apple is exploring the development of personal home robots after ditching its electric vehicle project.
    nieyujiang
        5
    nieyujiang  
       21 天前
    正常啊,苹果出的东西一直不怎么考虑向下兼容.一直是爱用用,不用滚的态度.
    iOCZS
        6
    iOCZS  
       21 天前
    得益于 Swift 支持了宏,才有了这个能力。
    bucaibuer
        7
    bucaibuer  
       21 天前
    Android 发开发一枚,自己个人项目 CareServer 就是用 SwiftUI + Observation 写的,感觉还可以,已经上架到 AppStore
    bucaibuer
        8
    bucaibuer  
       21 天前
    @bucaibuer 搞错了,是 SwiftUI + ObservableObject
    musi
        9
    musi  
       21 天前
    @iClass #2 国内的百度有跟没有有什么区别
    iClass
        10
    iClass  
       21 天前 via Android
    @musi iOS 里面的 Siri 据说在国内是和百度绑定。目前很少用国区的软件和普通话 Siri 。因此并不在意。
    alexcding
        11
    alexcding  
       20 天前 via iPad
    本来打算换的,结果发现不能和 Combine 联动了。暂时放弃。
    admin545
        12
    admin545  
       20 天前
    终于统一了 state 和 stateobject ,environment 和 environmentobject
    rainbowmolly
        13
    rainbowmolly  
       20 天前
    @alexcding 在前面加 bindable 也不行吗
    agagega
        14
    agagega  
       20 天前
    连 Combine 这种几乎不依赖什么系统功能的库苹果都要搞成 iOS 13 可用,摆明了就是故意不兼容,除了 iOS 15 的 async/await 开发者民怨太大才往后兼容回了 13 。其实 SwiftUI 本身都能搞成开源的
    pc10300
        15
    pc10300  
       20 天前
    今天尝试了一下,还有点搞不明白
    @AppStorage 这玩意是没法用了吗
    magic3584
        16
    magic3584  
       20 天前
    去看下 App Store 上 Apple Store 的评价就知道了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2611 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:20 · PVG 19:20 · LAX 04:20 · JFK 07:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.