【问题标题】:Swift OSX what is the first method to be run?Swift OSX 运行的第一个方法是什么?
【发布时间】:2016-08-31 23:29:01
【问题描述】:

这似乎是一个新手问题,但我已经为此苦苦挣扎了一段时间。我想在我的应用启动之前运行一些代码初始化。

目前我的 AppDelegate 设置如下:

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate
{
    func applicationDidFinishLaunching(aNotification: NSNotification)
    {
        runMyInitCode()
    }
}

我的问题是我的所有目标代码都在此之前运行。在其他任何东西运行之前调用初始化方法的最佳位置在哪里?

【问题讨论】:

  • 谢谢。我有一个有用的全局变量 var app = NSApplication.sharedApplication().delegate as!应用委托。如果我尝试在 override init() 中访问它,那么它不会被初始化。如果我尝试在 init() 中进行初始化,则会出现错误。初始化它的最佳位置在哪里?
  • NSApplication.sharedApplication().delegate as! AppDelegate 等同于class AppDelegate

标签: swift macos


【解决方案1】:

您有 4 个选项(按出现顺序):

  • 覆盖init()
  • 覆盖awakeFromNib()
  • 委托通知applicationWillFinishLaunching
  • 委托通知applicationDidFinishLaunching

最佳位置取决于您的需求。

  • 如果涉及IBOutlets,则不要放在awakeFromNib之前。
  • 如果您使用的是基于视图的表格视图,请不要将其放入 awakeFromNib,因为它可能会被多次调用。
  • 注册NSUserDefaults可以随处放。
  • 还要考虑延迟初始化。
  • 还要考虑 Cocoa 绑定。

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2011-09-13
    • 2020-08-05
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多