在惰性初始化中访问继承的对象 swift

Accessing inherited objects in lazy initializing swift

只是想知道为什么在延迟初始化时无法访问继承对象collectionView:

class FunCollectionLayout : UICollectionViewFlowLayout {
    var middleSection:Int = {
        let sectionCount = self.collectionView!.numberOfSections()
        return sectionCount/2
    }()

    func testFunc() {
        print((self.collectionView?.numberOfSections())! / 2)
    }
}

错误是:

Value of type 'NSObject -> () -> FunCollectionLayout' has no member 'collectionView'

您只是缺少 lazy 声明属性。

  lazy var middleSection:Int = {
    let sectionCount = self.collectionView!.numberOfSections()
    return sectionCount/2
  }()

但是你没有将其计算为 属性。

  var middleSection: Int {
    let sectionCount = self.collectionView!.numberOfSections()
    return sectionCount / 2
  }

保持动态,与 collectionView 保持同步,使其成为计算 属性。