首页 > 解决方案 > Swift 中的新错误告诉我我的委托很弱

问题描述

import Cocoa 

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

这给了我错误:

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

更新:

这行得通。

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

标签: swiftmacoscocoa

解决方案


我无法想象 gobalNSApplication对象调用NSApplicationMain(). (没有双关语)的主要工作之一NSApplicationMain()是创建NSApplication对象。

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

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


推荐阅读