iOS 26 又有新的属性监听方法啦?

看到UIViewController新增了updateProperties()方法,看起来是改变属性值就会刷新页面,要方便不少。

试试看,写了个UIButton+UILabel+Model,点击时修改modelnameage,看看会不会自动调用updateProperties(),代码如下:

swift 复制代码
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBOutlet weak var button: UIButton?
    @IBOutlet weak var label: UILabel?
    
    class Model {
        var name: String = ""
        var age: Int = 0
    }
    let model: Model = Model()
    
    @IBAction func touchUpInside(_ sender: Any) {
        model.name = String(UUID().uuidString.prefix(5))
        model.age = .random(in: 0...1000)
    }
    
    override func updateProperties() {
        super.updateProperties()
        label?.text = "name: \(model.name)\nage: \(model.age)"
    }
}

运行了一下,发现viewDidLoad之后确实会自动调用一次updateProperties

可是,点击button完全没有变化。。。。。。

偶然发现另一个关键是@Observable,把Model改一改,在运行,点击button有效果了!

swift 复制代码
@Observable class Model {
    var name: String = ""
    var age: Int = 0
}

原来@Observable是个宏,点击宏展开会发现很多东西,应该就是和kvo类似的吧

相关推荐
未来侦察班4 小时前
一晃13年过去了,苹果的Airdrop依然很坚挺。
macos·ios·苹果vision pro
锐意无限10 小时前
Swift 扩展归纳--- UIView
开发语言·ios·swift
符哥200810 小时前
用Apollo + RxSwift + RxCocoa搭建一套网络请求框架
网络·ios·rxswift
文件夹__iOS14 小时前
AsyncStream 进阶实战:SwiftUI 全局消息流极简实现
ios·swiftui·swift
2501_9160088916 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
忆江南17 小时前
Flutter深度全解析
ios
山水域17 小时前
Swift 6 严格并发检查:@Sendable 与 Actor 隔离的深度解析
ios
楚轩努力变强18 小时前
iOS 自动化环境配置指南 (Appium + WebDriverAgent)
javascript·学习·macos·ios·appium·自动化
游戏开发爱好者82 天前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
黑码哥2 天前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder