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

时间:2016-05-10 21:33:18

标签: swift inheritance lazy-initialization

只是想知道为什么在延迟初始化时我无法访问继承的对象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'

1 个答案:

答案 0 :(得分:1)

您只是缺少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保持同步,使其成为计算属性。