请帮我解决这个问题或告诉我宣布这个属性的正确方法。
// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()
lazy var allItems: [[Item]] = {
return [cheapItems, expensiveItems]
}()
答案 0 :(得分:4)
因为您要将结果的结果分配给延迟加载的属性 - 您需要遵循闭包规则。其中一条规则是,如果您指的是self
- 您必须明确地执行此操作。 (虽然这不适用于@noescape
关闭 - 但无论如何你都不能在这里使用它们)
这只是为了让您承认自己正在捕获并保留self
,但看到它是一个懒惰的属性,它不应该导致保留周期,因为它是只调用一次,然后将结果分配给该属性。
因此,您需要使用self.cheapItems
和self.expensiveItems
。
// MARK: Properties
var expensiveItems = [Item]()
var cheapItems = [Item]()
lazy var allItems: [[Item]] = {
return [self.cheapItems, self.expensiveItems]
}()