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

相关推荐
Digitally2 小时前
iTunes 无法连接到此 iPhone - 9 种解决方法
ios·iphone
2501_916007475 小时前
iOS逆向工程:详细解析ptrace反调试机制的破解方法与实战步骤
android·macos·ios·小程序·uni-app·cocoa·iphone
REDcker5 小时前
Safari 26.4 新增 WebTransport:对 iOS WebView 的影响与落地建议
前端·ios·safari
00后程序员张6 小时前
前端可视化大屏制作全指南:需求分析、技术选型与性能优化
前端·ios·性能优化·小程序·uni-app·iphone·需求分析
产品人卫朋7 小时前
硬件产品分析:Selfix背屏手机壳 - iPhone 17 Pro的后摄自拍救星?
ios·智能手机·iphone
REDcker9 小时前
iOS 与 Android:浏览器引擎、WebView 与生态差异概览
android·ios·内核·浏览器·webview
美狐美颜sdk9 小时前
视频平台如何实现实时美颜?Android/iOS直播APP美颜SDK接入指南
android·前端·人工智能·ios·音视频·第三方美颜sdk·视频美颜sdk
白玉cfc10 小时前
【iOS】Blocks
macos·ios·objective-c·cocoa
90后的晨仔19 小时前
第2章:声明式 UI 基础
ios