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类似的吧

相关推荐
杂雾无尘3 小时前
iOS 分享扩展(三):轻松定制 iOS 分享界面,提升用户体验
ios·swift·apple
鹤渺5 小时前
React Native 搭建iOS与Android开发环境
android·react native·ios
Digitally12 小时前
如何将数据从安卓设备传输到 iPhone | 综合指南
android·ios·iphone
Pitayafruit13 小时前
写给尊贵的 Tare Pro 用户的喂饭级 IOS APP 开发指南
ios·ai编程·trae
openinstall1 天前
A/B测试如何借力openinstall实现用户价值深挖?
android·ios·html
二流小码农1 天前
鸿蒙开发:资讯项目实战之项目初始化搭建
android·ios·harmonyos
Hierifer1 天前
跨端实现 DSBridge 源码解析
前端·ios
帅次1 天前
快速使用 Flutter 中的 SnackBar 和 Toast
android·flutter·ios·小程序·kotlin·iphone·android-studio