当前位置: 首页 > news >正文

可以做哪方面的网站网站建设明细报价表

可以做哪方面的网站,网站建设明细报价表,博罗做网站哪家强,php做的购物网站代码SwiftUI中的StateObject和ObservedObject属性包装器指示视图更新以响应被观察对象的变化。虽然这两个属性包装器看起来很相似,但在使用SwiftUI构建应用程序时,有一个关键的区别需要理解。 两个属性包装器都要求对象符合ObservableObject协议。这个协议表…

SwiftUI中的@StateObject和@ObservedObject属性包装器指示视图更新以响应被观察对象的变化。虽然这两个属性包装器看起来很相似,但在使用SwiftUI构建应用程序时,有一个关键的区别需要理解。

两个属性包装器都要求对象符合ObservableObject协议。这个协议表明在对象改变之前有发布者(@Published变量)通知SwiftUI触发视图的重绘。

@StateObject的介绍和使用

@StateObject属性包装器与其他属性包装器不同,@StateObject负责创建和管理包装对象的生命周期,与@StateObject相关联的对象在拥有它的视图的生命周期内持续存在。

在一下两种情况下,应该使用@StateObject属性包装器:

  1. 初始化一次
  2. 由视图拥有的属性

初始化一次:当由于外部数据更改或重绘操作而重新计算绘制视图主体时,用@StateObject包装的属性不受影响。

属于视图:数据的生命周期与视图的生命周期相关联。一旦拥有数据的视图被释放,数据就会被释放。

在使用的时候也是比较简单的,如下:

import SwiftUIstruct VideosView: View {@StateObject private var viewModel = VideoViewModel()var body: some View {List(viewModel.notes, id: \.self) { video inText(video.title)}}
}final class VideoViewModel: ObservableObject {@Published private(set) var videos: [Video] = []
}

@StateObject属性包装器包装后的对象只初始化一次,并在视图更新期间持续存在。不过@StateObject属性包装器只能与引用类型一起使用,因为只有引用类型才能符合ObservableObject协议。

@ObservedObject的介绍和使用

上面了解了@StateObject属性包装器在拥有和管理SwiftUI视图中的数据方面起着重要的作用。不过,并不是每一块数据都需要或应该由显示它的视图拥有。这就是@ObservedObject属性包装器发挥作用的地方。与@StateObject不同的是,@ObservedObject被设计成在不获取所有权的情况下观察和响应引用类型的变化。

@ObservedObject并不拥有或管理它所观察对象的生命周期。它只是监听observable对象中的变化,并触发视图的更新。

如果数据是外部的,则选择@ObservedObject属性包装器。

如果视图需要显示由外部源(如父视图或共享数据存储)拥有和管理的数据,则选择@ObservedObject属性包装器。

使用的时候不需要初始化viewModel,而是由外部传入。

import SwiftUIstruct VideosView: View {@ObservedObject private var viewModelvar body: some View {List(viewModel.notes, id: \.self) { video inText(video.title)}}
}final class VideoViewModel: ObservableObject {@Published private(set) var videos: [Video] = []
}

使用@ObservedObject而不是@StateObject,因为视图不会创建和管理VideoViewModel。当视图被释放时,VideoViewModel不应该被释放。

如果发生外部数据更改,@ObservedObject属性包装器允许视图更新其主体。它使得在视图之间共享数据变得更加容易。与@StateObject不同,ObservedObject并不管理它所观察对象的生命周期,所以你需要确保对象的生命周期是在应用的其他地方管理的。

总结

@StateObject@ObservedObject有相似的特性,但是它们在SwiftUI如何管理它们的生命周期方面有所不同。当当前视图创建观察对象时,使用@StateObject属性包装器确保结果一致。当注入一个被观察对象作为依赖时,使用@ObservedObject

http://www.shuangfujiaoyu.com/news/43253.html

相关文章:

  • wordpress企业仿站视频教程怎么提交网址让百度收录
  • 凡科网站怎么修改昨天做的网站市场营销实际案例
  • 鞍山建立公司网站的步骤100大看免费行情的软件
  • 政府门户网站建设 苏州海外网络推广
  • 策划方案免费网站二级域名免费申请
  • 网站备案信息管理推广平台免费b2b网站大全
  • 网站多快能收录seo百度搜索推广操作简要流程
  • java快速建站怎么推广自己的产品
  • 网页免费建站长沙seo网站排名优化公司
  • 软件工程研究生学校排名青岛自动seo
  • 淘宝返利网站怎么做的seo网站快速整站优化技术
  • 网站设计跟网页制作商务软文写作范文200字
  • 汉中住房和城乡建设部网站推广代理公司
  • 微信网站链接怎么做seo方案怎么做
  • 黄石做网站的公司厦门seo总部电话
  • 做甜品网站的需求分析seo关键词推广渠道
  • 关于宠物的网站模板seo排名点击软件运营
  • 计算机专业网页制作宁波seo外包快速推广
  • 做网站宣传有用吗百度官网网站
  • 网站到期是否能换服务商海外推广方法有哪些
  • 网站的连接二维码怎么做广告平台推广渠道
  • 网站建设 免费长沙做网站推广
  • 网站做cpa赚钱吗竞价推广网络推广运营
  • 天津城建设计院网站做推广网络
  • 网站开发模板下载培训行业seo整站优化
  • 手机app可以做网站吗线上电脑培训班
  • 网站备案号如何查询百度公司的企业文化
  • 商城网站建设计划书关键词优化师
  • 广东企业网站建设公司百度有专做优化的没
  • 智能网站建设维护软件普通话手抄报简单又漂亮