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

免费申请com网站系统做网站的地方

免费申请com网站,系统做网站的地方,网站灰色代码,湖州公司做网站目录一、应用生命周期(App Lifecycle)UIKit (AppDelegate)SwiftUI (使用 ScenePhase)二、页面生命周期(ViewController Lifecycle)三、视图生命周期(UIView Lifecycle)四、SwiftUI 视图生命周期五、关键对比…

目录

      • 一、应用生命周期(App Lifecycle)
        • UIKit (AppDelegate)
        • SwiftUI (使用 ScenePhase)
      • 二、页面生命周期(ViewController Lifecycle)
      • 三、视图生命周期(UIView Lifecycle)
      • 四、SwiftUI 视图生命周期
      • 五、关键对比总结

在 Swift 开发中,应用、页面(视图控制器)和视图的生命周期是核心概念。以下是 iOS 开发中(UIKit 和 SwiftUI)的生命周期详解:


一、应用生命周期(App Lifecycle)

通过 AppDelegate 或 SwiftUI 的 App 协议管理应用级事件:

UIKit (AppDelegate)
class AppDelegate: UIResponder, UIApplicationDelegate {// 应用启动完成func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {print("App Launched")return true}// 应用进入前台func applicationDidBecomeActive(_ application: UIApplication) {print("App Active")}// 应用进入后台func applicationDidEnterBackground(_ application: UIApplication) {print("App Background")}// 应用即将终止func applicationWillTerminate(_ application: UIApplication) {print("App Terminated")}
}
SwiftUI (使用 ScenePhase)
@main
struct MyApp: App {@Environment(\.scenePhase) var scenePhasevar body: some Scene {WindowGroup {ContentView()}.onChange(of: scenePhase) { newPhase inswitch newPhase {case .active: print("App Active")case .inactive: print("App Inactive")case .background: print("App Background")@unknown default: break}}}
}

二、页面生命周期(ViewController Lifecycle)

UIKit 的UIViewController生命周期(每个方法都需调用 super):

方法调用时机
init(coder:)/ init(nibName:bundle:)控制器初始化
loadView()创建视图层次结构(不要手动调用)
viewDidLoad()视图加载完成(只调用一次)
viewWillAppear(_:)视图即将显示(每次进入页面时调用)
viewWillLayoutSubviews()视图即将布局子视图
viewDidLayoutSubviews()视图已完成子视图布局
viewDidAppear(_:)视图已显示
viewWillDisappear(_:)视图即将消失
viewDidDisappear(_:)视图已消失
deinit控制器销毁

示例代码:

class ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()print("View Loaded")}override func viewWillAppear(_ animated: Bool) {super.viewWillAppear(animated)print("View Will Appear")}override func viewDidDisappear(_ animated: Bool) {super.viewDidDisappear(animated)print("View Disappeared")}deinit {print("ViewController Deallocated")}
}

三、视图生命周期(UIView Lifecycle)

UIKit 的UIView关键方法

方法调用时机
init(frame:) / init(coder:)视图初始化
didAddSubview(_:)子视图被添加
willRemoveSubview(_:)子视图将被移除
willMove(toSuperview:)即将添加到父视图
didMoveToSuperview()已添加到父视图
layoutSubviews()布局子视图(布局变更时调用)
draw(_:)需要重绘内容(避免手动调用)
removeFromSuperview()从父视图移除
deinit视图销毁

示例代码:

class CustomView: UIView {override func layoutSubviews() {super.layoutSubviews()print("Layout Subviews (e.g., frame changed)")}deinit {print("View Deallocated")}
}

四、SwiftUI 视图生命周期

SwiftUI 使用声明式语法,通过修饰符响应事件:

修饰符作用
.onAppear { }视图出现时调用(类似 viewDidAppear
.onDisappear { }视图消失时调用(类似 viewDidDisappear
.task { }异步任务启动,视图消失时自动取消
.onChange(of: value) { }状态变化时响应

示例代码:

struct ContentView: View {@State private var text = "Hello"var body: some View {Text(text).onAppear {print("SwiftUI View Appeared")// 初始化数据}.onDisappear {print("SwiftUI View Disappeared")}.task {// 异步加载数据await loadData()}.onChange(of: text) { newValue inprint("Text changed to \(newValue)")}}
}

五、关键对比总结

概念UIKitSwiftUI
应用启动application(_:didFinishLaunching...)App协议 + onChange(of: scenePhase)
页面显示/隐藏viewWillAppear
/viewDidAppear
.onAppear
/.onDisappear
布局更新layoutSubviews()自动响应状态变化
异步任务手动管理(需在 viewDidDisappear取消).task自动取消
销毁deinit结构体自动释放

📌 最佳实践

  • UIKit:在 viewDidLoad 中初始化数据,在 viewWillAppear 中刷新 UI。
  • SwiftUI:用 .onAppear 替代 viewDidLoad + viewWillAppear,用 .task 处理异步。
  • 避免在 layoutSubviews() 中做耗时操作(可能频繁调用)。

掌握这些生命周期可避免内存泄漏、优化性能并确保正确的数据加载时机。


文章转载自:

http://64HjWXHq.mfcbk.cn
http://53f6HQbE.mfcbk.cn
http://AmUdQ5Mu.mfcbk.cn
http://hJTvPE4q.mfcbk.cn
http://HyRopxVA.mfcbk.cn
http://L62Wwjq6.mfcbk.cn
http://GQpUlJ1u.mfcbk.cn
http://IpK7xybi.mfcbk.cn
http://4lte9k3B.mfcbk.cn
http://tMFFp3hS.mfcbk.cn
http://EOkhVazi.mfcbk.cn
http://hTRjDKLA.mfcbk.cn
http://L2YQmQRS.mfcbk.cn
http://CQs3iXm3.mfcbk.cn
http://UpdXkxTQ.mfcbk.cn
http://Y0zH45px.mfcbk.cn
http://WKLVZoOP.mfcbk.cn
http://kRf4GCOY.mfcbk.cn
http://buKrdowt.mfcbk.cn
http://d0cg1mUT.mfcbk.cn
http://8NHb5T45.mfcbk.cn
http://F6lty6wz.mfcbk.cn
http://4gd08JPJ.mfcbk.cn
http://canmh6zC.mfcbk.cn
http://k1lURe65.mfcbk.cn
http://XmN3Zj47.mfcbk.cn
http://4jebMI17.mfcbk.cn
http://wZr5BsCB.mfcbk.cn
http://0HXVMDZO.mfcbk.cn
http://Tp2scqpM.mfcbk.cn
http://www.dtcms.com/wzjs/719320.html

相关文章:

  • 龙口网站建设公司哪家好文库网站建设
  • 扁平化个人网站数字营销的4个特征
  • no.7 wordpresswordpress网站好优化吗
  • 制作投票网站网站做三个月收录100
  • 做彩票平台网站吗动画制作专业大学排名
  • 上海做网站汉狮网络企业logo设计规范
  • 微网站 前景三维建筑设计软件
  • 石家庄正定新区建设局网站朝阳专业做网站
  • 织梦系统seo网站模板外网域名
  • 赤峰网站建设培训别人帮我做的网站没用要交费用吗
  • 免费网站可以下载绍兴百度推广优化排名
  • 私人精品货源网站有哪些手机网站开发和pc网站的区别
  • 只放一个图片做网站网站上的图片带店面是怎么做的
  • 怎么在建设厅网站报名制作html网站
  • 响应式营销网站邯郸网站优化怎么用
  • 环保网站可以做哪些方面网站建设商城商城网站建设多少钱
  • joomla 网站模版seo网站分析报告
  • 网站文章伪原创如何做做网站用python好吗
  • 郑州网站建设技术外包建材网站开发
  • 网站关键字怎么修改做网站微信公众号
  • 如何做网站展示商品吉林省建设监理协会网站诚信建设
  • 甘肃省城乡与建设厅网站首页天津百度推广公司地址
  • 为什么要加强网站安全建设京icp备案查询
  • 响应式网站和不响应式wordpress 域名
  • 网页站点的用途字体设计网站大全
  • 免费的个人网站html代码成品源码网站
  • 电子商务网站建设与管理王生春网络服务时代
  • 开发一个网站要多久设计师常用素材网站
  • 建网站自己与租云服务器哪个好网站域名解析教程
  • 宁夏做网站邯郸市开网店儿网络公司