Swift中的新错误告诉我我的代表很虚弱

时间:2019-03-20 17:15:21

标签: swift macos cocoa

import Cocoa 

NSApplication.shared.delegate = GenerateRandomNickOnApplicationActivation()
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)

这给了我错误:

  

因为属性“ delegate”为“弱”,实例将被立即释放

已更新:

这有效。

var activation = GenerateRandomNickOnApplicationActivation()
NSApplication.shared.delegate = activation
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)

1 个答案:

答案 0 :(得分:-1)

我无法想象NSApplication调用之前 世俗的NSApplicationMain()对象是有效的。 NSApplicationMain()的一项主要工作(无双关语)是创建NSApplication对象。

应用程序前启动代码的更好解决方案是使用标准的应用程序对象委托方法之一,例如applicationWillFinishLaunching

如果您需要尽早运行 re 代码,请定义NSApplication的子类,将其类注册到主nib文件中,然后将启动代码添加到其初始化程序中。您还可以包括新的实例变量等,以保存对任何值的引用。