关于性能优化–选择nib还是故事板的讨论
故事板是苹果在iOS5之后推出的技术,本意是集成多个nib文件于一个故事板文件,管理起来方便,故事板还能反应控制器之间的导航关系,很多导航是需要连连线就可以了,不需写代码,使用起来很方便。但是我告诫读者,从内存占用角度看故事板不是一个好的技术。
为了比较我们使用Xcode中的Master-Detail模板分别创建,基于故事板的应用StoryboardDemo和基于nib的应用 NibDemo。然后通过Instruments工具的Allocations模板分析ViewController视图控制器加载的时候,内存占用方面 有多少差别。NibDemo工程的Allocations模板跟踪,StoryboardDemo工程的Allocations模板跟踪。
画面启动用时00:02.776.562毫秒,内存占用1.10MB。画面启动用时00:02.911.718毫秒,内存占用1.11MB。NibDemo比StoryboardDemo画面启动时间短,内存要多占用0.01MB,即约等于10KB。
默认情况下工程中有一个故事板文件,它集成了应用中几乎所有的控制器,随着业务复杂度增加,在故事板的IB设计画面会变的杂乱无比,故事板文件会变得非常的庞大。应用程序在加载故事板时候有些迟缓,内存的占用也会增加。
事实上nib仍然是比较好的技术,只不过不能表达画面之间的导航关系,画面导航要手工编写代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库