swift - 在延迟初始化 swift 中访问继承的对象

标签 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'

最佳答案

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

关于swift - 在延迟初始化 swift 中访问继承的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149348/

相关文章:

swift - 为什么在使用变量过滤 RealmSwift 时 Xcode 会崩溃?

ios - 如何从 Swift 中的特定关系实体中获取数据?

ios - Swift 2.1 - 将信息输入到同时填充文本字段的 TextView 中?

css - 行高属性是否继承自body

java - 继承隐藏方法

ios - Swift 惰性和可选属性

Swift 4 UILabel 动画颜色

python - django-tables2 : Table subclassing and Meta inner class attributes

C++ 不同的单例实现

c++ - Lambda 的 "this"捕获返回垃圾