gpt4 book ai didi

swift - 无法在 UIViewController 上实现计算属性覆盖

转载 作者:行者123 更新时间:2023-11-30 10:09:35 25 4
gpt4 key购买 nike

当尝试实现这个时:

extension UIViewController {
public var presentedViewController: UIViewController? {
return UIViewController()
}
}

我收到以下错误:.../ExampleApp/ExampleAppTests/SpecExtensions.swift:41:59:具有 Objective-C 选择器“presentedViewController”的“presentedViewController”的 Getter 与具有相同 Objective-C 选择器的方法“presentedViewController()”冲突

我使用的是 UIViewController.h 定义的相同选择器:public varpresentedViewController:UIViewController? { 获取 }

该错误是否具有误导性,或者我只是忽略了某些内容?我已经尝试过使用或不使用 overridepublic 作为方法等。没有运气。但是,如果它位于 UIViewController 的子类上,但不是 UIViewController 本身,我可以覆盖它。

最佳答案

问题是你有它在扩展中。您无法从扩展覆盖类上定义的方法。基本上,扩展不是子类,尝试通过在扩展中实现新版本来重新定义类上存在的方法将会失败。

请注意,这有效:

class ViewController: UIViewController {

override var presentedViewController: UIViewController? {
return UIViewController()
}

}

关于swift - 无法在 UIViewController 上实现计算属性覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713158/

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