gpt4 book ai didi

swift - 单例内部方法的选择器

转载 作者:行者123 更新时间:2023-11-30 12:17:11 28 4
gpt4 key购买 nike

这听起来像是一个愚蠢的问题,但我已经尝试寻找解决方案几个小时了,但我仍然不知道该怎么做。我正在使用 Swift 3.0,并且从另一个类中的选择器调用单例类中的方法时遇到问题。我的单例类如下:

class Singleton : NSObject {

static let sharedInstance = Singleton()
private override init() {} // defeats instantiation

func myAction() {
// do something useful...
}

}

然后,这是我调用单例中包含的方法的类:

class StatusBarPresenter {

func addItemsToMenu(menu: NSMenu) {
...
menu.insertItem(withTitle: "Disconnect this network",
action: #selector(Singleton.sharedInstance.myAction),
keyEquivalent: "D", at: 4)
...
}

}

Xcode 不会提示代码...它编译时没有任何错误或警告,但选择器不起作用。我添加到菜单的 UIMenuItem 被禁用,这意味着选择器不起作用。如果选择器调用类内部的方法,则一切都会像往常一样正常工作。这是我得到的屏幕截图:

A screenshot of the error

最佳答案

感谢 Martin R. 指出,在我的代码中,我没有为 UIMenuItem 设置显式目标,导致它为 nil 并最终为 self。在调用 insertItem 后,将以下行添加到 addItemsToMenu 函数解决了问题:

menu.item(at: 4)?.target = Singleton.sharedInstance

关于swift - 单例内部方法的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266978/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com