Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中使用单例(内部包含结构的类)的正确方法_Swift - Fatal编程技术网

在Swift中使用单例(内部包含结构的类)的正确方法

在Swift中使用单例(内部包含结构的类)的正确方法,swift,Swift,我想了解哪种是构建代码的正确方式。我创建了一个用于视频处理(检测静默)的单例类,并将其处理输出(静默时间戳和其他信息)存储为结构。由于这应该是整个程序中的一个引用,所以我使用了一个单实例模式,因为我将在这之后运行一些多线程任务,并希望该类有一个单一的真实来源 class SilenceDetector { static let shared = SilenceDetector() // Singleton-pattern // <-- should I init it? f

我想了解哪种是构建代码的正确方式。我创建了一个用于视频处理(检测静默)的单例类,并将其处理输出(静默时间戳和其他信息)存储为结构。由于这应该是整个程序中的一个引用,所以我使用了一个单实例模式,因为我将在这之后运行一些多线程任务,并希望该类有一个单一的真实来源

class SilenceDetector {
  static let shared = SilenceDetector() // Singleton-pattern

  // <-- should I init it?

  func detectSilence(videoURL: URL) -> SilencesInfo { ... }

  private struct Silence {...}

  struct SilencesInfo { // <-- Should I use a Singleton-class?
   // here I run different functions with Silence struct
   ...
类沉默检测器{
静态let shared=沉默检测器()//单例模式
//沉默信息{…}
私有结构静默{…}

结构沉默信息{/使用单例模式没有合适的方法。它一直是一种黑客行为,但被SwiftUI完全淘汰了


无论您是否使用SwiftUI视图,您的SilenceDetector都应该是。默认情况下,所有内部类型都是静态的。即使您更改为类,也不能使用
SilenceDetector.shared.SilenceInfo
。也许您希望
SilenceDetector
保存
SilenceInfo
的实例?使用En仍然是一种好的做法吗大型非SwiftUI/视图类中的环境?我说是的,因为我不期望UIKit能够获得自己的标准化环境,比如解决方案。