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

相关推荐
小指纹8 分钟前
河南萌新联赛2025第(三)场:河南理工大学【补题】
数据结构·c++·算法·macos·ios·objective-c·cocoa
呼啸长风10 小时前
记一次未成功的 MMKV Pull Request
android·ios·开源
围巾哥萧尘10 小时前
iOS App开发上架全流程🧣
ios
这儿有一堆花14 小时前
eSIM技术深度解析:从物理芯片到数字革命
android·ios
归辞...16 小时前
「iOS」————weak底层原理
macos·ios·cocoa
染指111016 小时前
8.苹果ios逆向-安装frida
ios·ios逆向·frida·ios抓包·苹果抓包环境
卢叁21 小时前
关于代码优化的一点思考
ios·swift
染指11101 天前
7.苹果ios逆向-目录结构
ios·ios逆向·苹果·ios目录·苹果目录
Digitally2 天前
iPhone 恢复出厂设置是否会删除所有内容?
ios·iphone
2501_916007472 天前
iPhone查看App日志和系统崩溃日志的完整实用指南
android·ios·小程序·https·uni-app·iphone·webview