我在Swift上有一个简单的Person
课,看起来像这样:
class Person {
var name = "John Doe"
var age = 18
var children = [Person]?
\\ init function goes here, but does not initialize children array
}
我可以简单地声明children
并将其初始化为空数组,而不是将其声明为可选数组,如下所示:
var children = [Person]()
我正在努力决定哪种方法更好.将数组声明为可选数组意味着它根本不会占用任何内存,而空数组至少为其分配了一些内存,对吗?因此,使用可选数组意味着至少可以节省一些内存.我想我的第一个问题是:这里真的有任何实际的内存节省,或者我对这一点的假设是错误的吗?
另一方面,如果它是可选的,那么每次try 使用它时,我都必须在添加或删除对象之前判断它是否为nil
.因此,那里会有一些效率损失(但我想不会太多).
我有点喜欢可选的方法.并不是每Person
人都会有子元素,所以为什么不让children
人成为nil
人,直到Person
人决定安定下来并养育一个家庭?
无论如何,我想知道一种方法或另一种方法是否还有其他特定的优点或缺点.这是一个会反复出现的设计问题.