首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该每次都初始化一个新的ViewController,还是重置旧的ViewController?

在开发过程中,应该根据具体情况来决定是初始化一个新的ViewController还是重置旧的ViewController。这取决于以下几个因素:

  1. 内存管理:如果每次都初始化一个新的ViewController,可能会导致内存占用过高,特别是在频繁切换ViewController的场景下。而重置旧的ViewController可以减少内存占用,提高性能。
  2. 数据状态:如果ViewController包含了一些需要保持的数据状态,比如用户输入的表单数据,那么重置旧的ViewController可能更合适,以保留用户的输入数据。而初始化新的ViewController会导致数据丢失。
  3. 视图复用:如果ViewController的视图层次结构比较复杂,包含了大量的子视图和布局,那么重置旧的ViewController可能更高效,可以避免重复创建和布局子视图。但是如果视图层次结构比较简单,初始化新的ViewController可能更简洁明了。

综上所述,选择初始化新的ViewController还是重置旧的ViewController应该根据具体情况来决定,权衡内存占用、性能、数据状态和视图复用等因素。在实际开发中,可以根据需求和性能测试结果来选择最合适的方式。

(注:本回答中没有提及云计算相关内容,因为问题与云计算领域无关。)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UI篇-VC生命周期以及UIViewlayoutSubviews和drawRect方法

前言 看似常用UIView,其实有很多不经常用到方法和应该注意机制,一个喜欢打破砂锅问到底的人,可是很多问题在网上搜索不到答案,大部分博客都是转载相同东西,所以我自己就新建 Dome,实际测试了一些数据...一个很常见问题,我们需要在VC被销毁时候处理一些事情,可是 viewWillDisappear 不管是入栈视图还是出栈当前视图都会被调用,无法判断,结合之前说原理,我们可以利用下面这个方法判断当前...但是在VC中,当前UIView是在 viewDidLoad 执行后才初始化,所以我们会见到这样一个Bug,在VC初始化语句后面调用 一个 VC绘制UI方法,你会发现根本没有效果,这就是因为,VC...中跟试图初始化是需要时间,你在VC根试图初始化之前调用绘制UI方法当然是不会有效果出现。...那么将在每次设置或更改frame时候自动调用drawRect:。

1.8K30
  • iOS操作属性列表plist(增删改查)

    达到下面的效果: 创建plist属性列表文件: 首先我们新建一个Single View工程,这样就有可以直接使用storyboard和ViewController文件,然后创建一个属性列表文件。...,这表示你打开了Root这个数组在其下进行操作,否则就表示同级操作,点击那个加号,就可以在数组内添加数据,如果最左边三角形不是往下,那点击加号则会再创建一个平级量。...,把Table ViewdataSource和delegate关联到我们ViewController中去,同时,把Table View本身也关联到ViewController.h中去创建一个Outlet...效果如图: 7、修改plist内容 还是一样思路,修改可变数组某个位置内容,存入原位置,重新读取显示: //ViewController.m文件中 // 修改plist内容 [...这里有源码:https://github.com/Cloudox/PlistTest

    1.5K20

    阅读器多种翻页设计与实现

    ,对背面做一个自定义展示,需要打开self.pageVC.doubleSided = YES;; 初始化界面的时候和平移一样,但是在使用过程中再调用-setViewControllers时,如果animated...分解UI层实现,整个动画可以用以下流程来表示: 1、页面初始化,直接显示页面,监听用户pan手势; 2、用户pan手势开始,根据方向确定左滑还是右滑,获取VC; 3、处理用户左右滑动,视图跟随用户滑动...; 4、用户pan手势结束,根据动画完成程度确定是补齐动画还是回退; 5、处理完动画相关,将状态重置为1,接受用户pan手势; 如果还要支持tap手势,则自动完成一次动画效果,再将状态重置为status_show...block来完成); 注意事项: 滑页效果通常需要添加一个阴影效果,可以对showVC进行处理: - (void)addMaskToVC:(UIViewController *)vc { vc.view.layer.shadowColor...移动; 2、touchEnd之后,根据pan手势移动速度和原来滑动速度,计算得到滑动初始速度; 3、touchBegin开始,讲当前速度重置为0; 上述过程2处理非常复杂,需要考虑原来滑动速度

    3.2K10

    将模型添加到场景中 - 在您环境中显示3D内容

    横屏约束安全区 重新 Outlet 请记住,一个IBOutlet将sceneView链接到ARSCNView?因为我们删除了ARSCNView,所以它打破了这个Outlet。我们需要重新考虑。...单击并拖动左侧圆圈,它应该是第15行,然后释放到ARSCNView上。现在,关闭助理编辑。 添加按钮 我们想在视图中添加一个按钮,用作在场景中添加模型触发器。...import UIKit import SceneKit import ARKit extension ViewController {} 检索模型 在扩展内部,创建一个函数来检索我们选择模型是一个很好主动...在ViewController.swift中,将一个类变量声明为一个节点数组,我们将其初始化为空。...我们实际上没有选择,因为节点具有isHidden属性,并且不显示一个for。好吧,不是所知道。 那么,让我们来看看这两个场景。

    5.5K20

    iOS 面试策略之经验之谈-架构选择

    试想如果所有代码集中在一个 UIViewController 中,App 理论上确实能够运行,然而当调试时面对拥有庞大代码单个文件,我们需要花大量时间去找到发生问题源头。...基本上大量逻辑和视图代码集中在 ViewController 里,View 和 Model 也严格区分,代码分配遵循一定规则。 简单易懂。...相比于 MVC 在 ViewController 一个文件里面直接解决,MVP 总代码量可能会翻倍,这样 App 维护成本和文件大小都会增大。...文章到这里就结束了,感谢你观看,只是有些话想对读者们说说: iOS开发人群越来越少,说实在每次在后台看到一些读者回应觉得很欣慰,至少你们依然坚守iOS技术岗…为了感谢读者们,想把收藏一些编程干货贡献给大家...;如何获取,具体内容请转看-GitHub :GitHub地址

    1K30

    【IOS开发基础系列】Storyboard专题

    因为所有的窗口设计在一个故事板文件中,你会更容易把握每次改动带给每个窗口变化。     2、在故事板中可以描述各个窗口之间转换。这种转换叫做 segue(连接)。...当这个键缺失时,UIApplication将默认加载MainStoryboard.storyboard 文件并自动将故事板中第一个viewcontroller 初始化并放到一个新创建UIWindow... TabBarController 已经事先配置了两个ViewController,每个Tab 按钮一个。...创建连接时, Tab 也同时被加到TabBarController上,名字叫做 “Item”。想将场景放在第一个Tab上,可以用拖拽 Tab 方式改变它们顺序。         ...注意,将类名字和重用 ID 取成了一样——叫做 PlayerCell——这仅仅是因为喜欢这样。其实二者毫无干系,你完全让它们不一样。

    1K30

    为什么不推荐使用PHPicker

    ,大家应该或多或少看过一些别人写文章,介绍相册变化,介绍 PHPicker,但是有一些点没讲清楚,比如怎么用 PHPicker 获取视频?...那么下面让我们一起看看什么是 PHPicker 以及 iOS 14 相册有什么变化。...Demo 以及视频中都没有介绍,这也是迟迟没有写文章原因,因为之前也不知道怎么获取,那么下面让我们一起来看下怎么获取视频。...当用户选择了 limited 模式后,系统将在 App 每次启动后首次触发相册时弹出提示,允许用户修改需要授权给 App 照片。...: PHChange) { // Your code }复制代码 由于这是一组 API,所以就不介绍细节了(比如判断是新增还是删除),感兴趣朋友可以去了解一下。

    2.5K40

    浅谈MVC

    但是对于一个后台处理逻辑比较复杂程序而言,其实以上三部分也只是这个系统中一部分——前台展示与较浅层次业务逻辑处理部分,但是后台数据处理部分没有涉及到,这也是困惑了近两年一个疑问,与传统三层架构设计...(这个多半还是因为笔者对IOS开发工具不熟所致,还望见谅) 因为只有一个ViewController,所以所有响应事件处理逻辑都在此ViewController对象中声明与实现。...目前想到解决方案有两个:一是不用连接线,而就在ViewController初始化完子View后,挨个注册响应事件(这是根据Web开发经验而来,但还未100%验证过)。...另一个法子,也是目前在项目中使用法子,即是只用一个xib文件进行设计,每个子View界面设计工作放到ViewController对应xib文件中来设计,这样界面事件就能轻松跟ViewController...不过此法也有需要注意地方:1、各个子View一定要跟ViewController子View属性或变量用连接线连接起来;2、还是没法包含太多子View(当然,对于移动开发而言,貌似也不应该包含太多子

    93620

    微信支付架构到底有多牛?

    微信支付在各个操作系统,各个应用下挑战还是蛮大,这也得益于腾讯架构师专业。 作为一个重要业务,微信支付在客户端上面临着各种问题,其中最核心问题就是分平台实现导致问题。...但是这些软件架构存在一个问题:那就是没有处理好业务流程, 界面转场。 微信支付流程多。而流程就是由一个界面(ViewController,Activity)和相关业务逻辑组合而成。...路由数据模型由路由类型,还有各个路由类型所需要信息组合成。路由类型清晰定义了要触发行为。 究竟是要开启一个 UseCase,还是要打开一个界面,或者 网页,小程序,弹窗等等。...解决方案如下: ①将 CGI 抽象为独立对象 在架构设计上来说,架构是通过单例模式实现集约型 API,而我们架构则是通过命令模式实现离散型 API。 也就是将 CGI 封装为独立对象。...架构是一个不断演进过程,随着支付业务基于跨平台软件架构不断编写, 也会对这个架构进行持续更新迭代。让这个软件架构更贴合微信支付,更加健壮和完整。

    82610

    微信支付跨平台架构到底有多牛?

    但是这些软件架构存在一个问题: 那就是没有处理好业务流程, 界面转场。 微信支付流程多。而流程就是由一个界面(ViewController,Activity)和相关业务逻辑组合而成。...路由数据模型由 路由类型,还有各个路由类型所需要信息组合成。 路由类型清晰定义了要触发行为。究竟是要开启一个 UseCase,还是要打开一个界面,或者 网页,小程序,弹窗等等。...规范数据传递 iOS 和安卓架构存在信息传递不当和数据污染问题。这个问题最严重。iOS 和 安卓都出过不少 bug。...所有的界面,业务逻辑共用一个数据。 无序数据流动。 数据流动是不可追溯,数据修改可以发生在任意使用公共数据地方。 那么支付跨平台软件架构,为了杜绝这样问题。是这么做: ?...架构是一个不断演进过程,随着支付业务基于跨平台软件架构不断编写, 也会对这个架构进行持续更新迭代。让这个软件架构更贴合微信支付,更加健壮和完整。

    1.2K10

    UIPageViewController使用 分享笔记

    翻页效果展示图 结构 在使用UIPageViewController前,我们应该先搞清楚它层次结构。(这里是在使用过程中理解,如有不对,欢迎指出)。 ?...到这里是对pageViewController有一个初步理解。...方法将textController装入pageViewController中,这个set方法提供了一种样式,决定翻页是纵向还是横向。...通过合理设置,我们很容易就可以实现一个翻页效果。但是在开发阅读软件中还遇到一个非常严重体验问题。在翻页时候,书页背面的颜色默认为白色。在黑夜模式中非常“辣眼睛”! ?...BackViewController上只有一个大小为屏幕大小UIImageView,在第一次进入时,将参数viewControllerview作为图片设置到BackViewControllerUIImageView

    2.6K80

    初探 Core ML:学习建立一个图像识别 App

    这个 App 能够让使用者拍照或是从相簿中选择一张相片,然后机器学习演算法将会试着辨识出相片中物品是什么。虽然可能无法每次识别成功,但你可以藉此思考出如何在你 App 里使用 Core ML。...完成后代码应该会如下面所呈现样子: import UIKit class ViewController: UIViewController, UINavigationControllerDelegate...中初始化。...「为何我们不更早一点初始化呢?」 「在 viewWillAppear 中定义要点是什么?」 这要点是当你 App 试着识别你图像里有哪些物件时,会快上许多。...第 34-38 行: 最后,我们完成图像绘製并把资料移除,然后将 newImage 指定给 imageView.image。 如果你有点不明白上面的代码,别担心。

    2.8K70

    iOS14中PHPicker

    Demo 以及视频中都没有介绍,这也是迟迟没有写文章原因,因为之前也不知道怎么获取,那么下面让我们一起来看下怎么获取视频。...新增权限 iOS 14 中相册新增了一个 “Limited Photos Library” 模式,在授权时多了一个 “选择照片” 选项。...当用户选择了 limited 模式后,系统将在 App 每次启动后首次触发相册时弹出提示,允许用户修改需要授权给 App 照片。..._wv=1027&k=lzJejkSl),不管你是大牛还是小白欢迎入驻 当然这个弹窗是可以关闭,如果你希望手动控制 PHPickerController 弹出时机也是有办法。...: PHChange) { // Your code }复制代码 由于这是一组 API,所以就不介绍细节了(比如判断是新增还是删除),感兴趣朋友可以去了解一下。

    3.5K30

    iOS对UIViewController生命周期和属性方法解析

    iOS中UIViewController是UIKit框架中最基本一个类。从第一个UI视图到复杂完整项目,离不开UIViewController作为基础。...这是一个ViewController完整声明周期,其实里面还有好多地方需要我们注意一下: 1:initialize函数并不会每次创建对象调用,只有在这个类第一次创建对象时才会调用,做一些类准备工作...,这里面有一点需要我们注意,如果我们需要向controller中视图进行传值设置,通过以下方法得到Controller中,视图还没有被初始化创建出来:  ViewController2 * viewController2...在执行过上述方法后,如果返回YES,系统还会在执行如下一个方法,作为跳转前准备,我们可以在这个方法中进行一些传值操作,这个方法无论使我们手动进行跳转还是storyboard中自动跳转,都会被执行: -...我们可以把它连接到viewController2中一个按钮上: ? 这样,当我们点击viewController2中按钮时,就会返回到我们第一个ViewController1中了。

    2.9K20

    微信支付跨平台软件架构

    但是这些软件架构存在一个问题: 那就是没有处理好业务流程以及界面转场。微信支付流程多。而流程就是由一个界面(ViewController,Activity)和相关业务逻辑组合而成。...路由数据模型由 路由类型,还有各个路由类型所需要信息组合成。 路由类型清晰定义了要触发行为。究竟是要开启一个 UseCase,还是要打开一个界面,或者 网页,小程序,弹窗等等。...并且生命周期是一对一一个 Cgi 只会有一个 UseCase 处理, UseCase 销毁后,Cgi 也随之销毁。 对比架构,架构具有如下优点: 杜绝了一对多通信造成 Bug。...安卓传递数据类型是一个字典,而 iOS 则是一个 Model 对象。所有的界面,业务逻辑共用一个数据。 无序数据流动。...架构是一个不断演进过程,随着支付业务基于跨平台软件架构不断编写, 也会对这个架构进行持续更新迭代。让这个软件架构更贴合微信支付,更加健壮和完整。

    2K20
    领券