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

相关推荐
黑科技iOS上架3 小时前
ReactNative入门介绍
经验分享·ios
智塑未来4 小时前
鸿蒙系统对比安卓、iOS,核心优势是什么?
android·ios·harmonyos
初雪云6 小时前
iOS 上架入门:证书、描述文件、IPA 上传到底是什么关系?
android·ios·自动化·产品经理·iphone
狂热开发者9 小时前
用 Typeoff 把会后口述整理成 Markdown 决策记录
人工智能·windows·macos·ios·安卓
2501_9159184111 小时前
PerfDog 太贵?iOS 性能监控工具的功能对比与选择
android·ios·小程序·https·uni-app·iphone·webview
MDM.Plus1 天前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
韩曙亮1 天前
【Flutter】Flutter 进程保活 ③ ( 屏幕常亮设置 | Flutter 禁止息屏、关闭自动锁屏、屏蔽系统屏保 )
android·flutter·ios·屏幕常亮·禁止息屏
2501_915909061 天前
IPA 深度混淆是什么意思?从混淆强度到实际效果的解读
android·ios·小程序·https·uni-app·iphone·webview
apihz1 天前
经纬度制作高清卫星图片免费 API 接口详解
开发语言·ios·swift
黄林晴1 天前
KMP 正式支持 SwiftPM:CocoaPods 迁移配置指南
android·ios·kotlin