I want to create a class where all utility methods will be kept and these methods will be used throughout the app.
Problem:1
Is it good to create a singleton class and keep all necessary methods there or should I create a class where all function will be static.
Problem:2
What is main difference between above two approaches in swift ?
Problem:3
How it will impact performance and memory in iOS?

推荐答案

当然,这听起来令人困惑,可以讨论.然而,从最佳实践中,我可以提出一些建议.

Singleton通常用于创建资源密集型和一次计时器初始化,例如:数据库连接器、登录处理程序等.

Utility class是只有静态函数和变量的类.它不应该处理异步任务和昂贵的资源处理,比如打开数据库连接器.

在您的例子中,如果实用程序正在执行一些资源密集型的过程,那么最好将其封装在一个单例中.如果不是,那么在我看来,类中的静态函数更好.这也是因为Swift将使用static dispatch分派类中的所有静态函数.尽管Swift 喜欢优化,但这在单例中不可能是真的.

在使用Objective-C运行时时时为Static Dispatch are 4 times faster than Dynamic Dispatch.Swift 也是如此.然而,动态调度只需4纳秒.

我希望这能让你明白.

Swift相关问答推荐

WWDC Swift并发会话中的厨房服务示例令人困惑

如何在Swift 中创建移动的uil标签?

我在SwiftUI中的动画无法正常工作

了解SWIFT中的任务行为

像WebSocket一样接收实时更新,但通过异步/等待或组合

是否可以限制 ExpressibleByIntegerLiteral struct 的初始值?

为什么自定义串行队列的目标是全局队列时,Swift中不会并发执行?

在 Swift 中将异步任务包装到 DispatchWorkItem 中以使其可取消?

为什么我的Swift app不能用xcodebuild构建,但是用XCode可以构建?

RealityKit - 从中心zoom 模型

数组中某些元素的总和

ForEach within List:模式的好处?

我如何遵守与演员的协议?

SwiftUI View .tint(_ Color) 方法不起作用

Swift 根据总值将数组拆分为块

如何处理永远不会失败的 String.Encoding 初始化程序?

RxSwift:share() 替代方案,保证upstream 的单一订阅

在 xcode 13 中的构建之间保持可访问性权限

Swift 5.0 编译器无法导入使用 Swift 4.2.1 编译的模块

swift : 具有类型和值的枚举常量