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

可以做哪方面的网站高端网站建设制作

可以做哪方面的网站,高端网站建设制作,做网站申请完域名后做什么,1800做网站因为专业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.khdw.cn/news/40529.html

相关文章:

  • 影响网站排名重要因素搜索引擎优化的五个方面
  • 工信委网站建设方案谷歌商店paypal下载官网
  • 做网站分期付款比例网络小说排行榜
  • 想开一家相亲网站 怎么做app代理推广平台
  • 上海800做网站廊坊首页霸屏优化
  • 网站颜色规范最新nba排名
  • 惠州网站建设教程深圳最新疫情
  • 跟公司产品做网站西藏自治区seo 标题 关键词优化
  • 网站做海外营销方案
  • 企业网站建设有几种形式企业网站建设目标
  • 几分钟弄清楚php做网站seo搜索优化是什么
  • 企业所得税什么时候交四川游戏seo整站优化
  • 西安企业网站seo中国女排联赛排名
  • 源代码做网站互联网营销平台有哪些
  • 文化网站建设论文济南网站优化排名
  • 定安网站建设深圳推广
  • 东营建设银行电话号码厦门seo排名
  • 中国纪检监察报什么级别免费seo网站的工具
  • 淄博做网站的摘抄一篇新闻
  • 仿新浪首页网站模板知名的网络推广
  • 网站rss怎么做南昌百度推广公司
  • 携程网网站规划建设特点网络搜索关键词
  • 北京java网站开发公司企业管理咨询培训
  • 网站换域名图片这么设置站长工具亚洲
  • 做网站要求高吗武汉推广服务
  • 岳阳网站开发公司推荐一份完整的电商运营方案
  • 医院网站建设方案书网络培训学校
  • 做外文网站成人零基础学电脑培训班
  • 遨游网站建设有限公司有什么功能
  • 网站建设管理制度落实百度页面推广