<分区>
请帮我解决这个问题或者告诉我声明这个属性的正确方法。
// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()
lazy var allItems: [[Item]] = {
return [cheapItems, expensiveItems]
}()
<分区>
请帮我解决这个问题或者告诉我声明这个属性的正确方法。
// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()
lazy var allItems: [[Item]] = {
return [cheapItems, expensiveItems]
}()
最佳答案
因为您要将闭包的结果分配给延迟加载的属性 - 您需要遵循闭包规则。其中一条规则是,如果您指的是 self
- 您必须明确地这样做。 (虽然这不适用于 @noescape
闭包——但无论如何你不能在这里使用它们)
这只是为了让您承认您正在捕获和保留 self
,但是由于它是一个延迟加载的属性,它不应该导致保留循环,因为它只被调用一次并且然后将其结果分配给该属性。
因此您需要使用self.cheapItems
和self.expensiveItems
。
// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()
lazy var allItems: [[Item]] = {
return [self.cheapItems, self.expensiveItems]
}()
关于arrays - 惰性属性中的 "Instance member cannot be used on type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35990637/