【发布时间】:2021-09-18 09:33:12
【问题描述】:
在我的应用程序中,我目前使用单独的class 来存储我想随时随地访问的一堆静态变量。
class Sounds {
static var soundInitial : Sound!
static var soundThunder : Sound!
static var soundWind : Sound!
// etc... (about 50 more)
}
这个Sounds 类从未被用作实例,而是作为所有音效的容器(类型为Sound - 这是一个单独的类)
我在viewDidLoad 期间从主视图控制器初始化所有音效:
let urlPath1 = Bundle.main.url(forResource: "art.scnassets/sounds/my_sound_file", withExtension: "mp3")
Sounds.soundInitial = Sound(url: urlPath1!, volume: 1.0)
// etc...
然后我可以像这样在任何给定时间使用它:
Sounds.soundInitial.play(numberOfLoops: -1) // endless looping
作为一个还没有那么好的经验的程序员,我非常基本的问题:
有没有更常用的方法或更好的方法将我的所有声音变量集中存储在一起? (我不想在 View Controller 中定义它们,因为这也会给我那里有很多变量...)
我发现,我可以使用struct 来达到同样的效果。但这会是更好的方法吗?
在 Swift 中是否有专门为此目的而设计的 Container Object?
【问题讨论】:
-
如果您为此使用类或结构,那么您应该声明一个私有 init 以便不能创建实例,
private init() {}。但更常见的方法是对静态变量使用枚举(只需将上面代码中的“类”一词替换为“枚举”即可)。 -
这很有魅力。太简单。完美的评论!
标签: swift class enums containers