gpt4 book ai didi

Swift 无法通过 IBAction "Any"连接多个按钮但可以通过 "AnyObject"

转载 作者:可可西里 更新时间:2023-11-01 02:11:36 27 4
gpt4 key购买 nike

我正在构建一个有 9 个按钮的应用程序。我试图将它连接到下面的一个 IBAction,但它不起作用(助理编辑器中没有 UI 更新让我连接按钮和这个 IBAction 代码块)。

@IBAction func buttonPressed(_ sender: Any) {

print("ButtonPressed")

}

enter image description here

然而,它适用于发件人之后的“AnyObject”。

    @IBAction func buttonPressed(_ sender: AnyObject) {

print("ButtonPressed")

}

enter image description here

问题1,为什么会出现这种行为?

问题2,Swift中Any和AnyObject有什么区别?

基于 swift_documentation , any 允许各种类型的对象,而 anyObject 只允许相同类型的对象。在这种情况下,我相信这意味着发件人对象必须与 any 的类型相同。

这是否意味着连接多个按钮只允许相同类型的按钮,因此只有 anyObject 有效?

最佳答案

最后的事情优先:)

区别

如果您查看 The Swift Programming Language 中对 AnyAnyObject 的描述你会发现这个描述:

  • Any can represent an instance of any type at all, including function types.

  • AnyObject can represent an instance of any class type.

为什么会这样

我在这里猜测,但是 @IBActionTarget-Action 的一部分Apple 用于在应用程序的不同元素之间进行通信的模式(目标知道如何与操作相关联)。由于此模式早于 Swift,我猜测操作的 sender 必须是一个类才能使其工作。在 Objective C 中,你会使用 id,意思是“任何类”,而在 Swift 中——正如我们刚刚发现的——“可以​​是任何类的东西”的表示是 任何对象

希望这对您有所帮助。

关于Swift 无法通过 IBAction "Any"连接多个按钮但可以通过 "AnyObject",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40800979/

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