首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么‘`viewDidLoad()’之外的初始化失败?

为什么‘`viewDidLoad()’之外的初始化失败?
EN

Stack Overflow用户
提问于 2015-01-09 12:35:11
回答 2查看 209关注 0票数 0

这不能编译:

代码语言:javascript
运行
复制
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {

    let fileManager = NSFileManager.defaultManager()

    let dir: NSURL? = NSURL.fileURLWithPath("/Users/wilfred/")

    var error: NSError? = nil

    var folderContents: [NSURL]? = fileManager.contentsOfDirectoryAtURL(dir!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions(), error: &error) as [NSURL]?

…但这确实是:

代码语言:javascript
运行
复制
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {

    let fileManager = NSFileManager.defaultManager()

    let dir: NSURL? = NSURL.fileURLWithPath("/Users/wilfred/")

    var error: NSError? = nil

    var folderContents: [NSURL]? = nil

    override func viewDidLoad() {
        super.viewDidLoad()
        self.folderContents =  fileManager.contentsOfDirectoryAtURL(dir!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions(), error: &error) as [NSURL]?
    }

注意,我只使用了从声明块初始化folderContents的块,并将其复制到viewDidLoad()块。为什么!??!

我得到的错误是:

…这在我看来是假的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-09 16:45:35

属性是在创建self之前初始化的,因此当您想在fileManager中获得folderContents (即self.fileManager )时,self是不存在的,因此您无法获得self的任何属性。例如,如果重写任何类的init方法,在其中放置一个断点,并在属性上设置断点,执行代码,则可以看到属性首先到达,而不是init。

票数 2
EN

Stack Overflow用户

发布于 2015-01-09 12:55:21

在docu的某个地方,有人说在第一种情况下,您需要self:

代码语言:javascript
运行
复制
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {
  let fileManager = NSFileManager.defaultManager()
  let dir: NSURL? = NSURL.fileURLWithPath("/Users/wilfred/")
  var error: NSError? = nil
  lazy var folderContents: [NSURL]? = self.fileManager.contentsOfDirectoryAtURL(self.dir!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions(), error: &self.error) as [NSURL]?
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27860704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档