gpt4 book ai didi

swift - 在swift中将子类对象声明为父类(super class)但对象仍然表现为子类

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

我按照 Swift 教程编写了一个名为 DragImg 的 UIImageView 子类,并在该子类中覆盖了一些函数,即 touchesBegan、touchesMoved 和 touchesEnded。

然后我进入身份检查器,查看我想应用子类的图像,并将类更改为 DragImg,然后将它们连接到 ViewController.swift 作为导出。

但是,在我的 ViewController.swift 文件中,我将它们声明为 UIImageView 对象,即

@IBOutlet weak var HeartImg: UIImageView!

代替

@IBOutlet weak var HeartImg: DragImg!

即使我没有更改它,图像仍然按照我们在子类中编写的函数定义运行。

我不确定为什么这仍然有效,因为我认为父类(super class)无法访问子类的函数。这是否意味着上面的声明在很大程度上是多余的,唯一有所不同的是更改身份检查器中的类?

有人可以解释一下吗?

最佳答案

这是正确的,因为您在识别检查器中使用了 DragImg,它实际上是创建实例时使用的类。即使您在 UIViewController 中使用了 UIImageView,它仍然是 DragImg 对象实例。如果您想要 UIImageView,则将标识 Inspector 改回 UIImageView。

关于swift - 在swift中将子类对象声明为父类(super class)但对象仍然表现为子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36297086/

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