尝试使自定义数组对象变弱时,出现此错误'weak' may only be applied to class and class-bound protocol types, not '[ExerciseSet]'
。为什么我不能给弱类型分配这种类型?
class Session {
weak var sets: [ExerciseSet]?
}
答案 0 :(得分:2)
您不能这样做,因为Swift数组是结构而不是类。如果要在Swift中对数组进行弱引用,则需要使用包装器对象,如下所示:
class Wrapper<T> {
let value: T
}
然后将您的课程更改为以下内容:
class Session {
weak var sets: Wrapper<[ExerciseSet]?>
}
话虽这么说,在这里使用弱引用可能没有意义。您的会话可能是单例,也可能是一个对象,该对象一直保留在整个应用程序生命周期的内存中。
除非您实际上需要知道是否设置了该属性,否则还可以使用[ExerciseSet]
而不是使其成为可选属性,然后在没有任何值时使用空数组。