gpt4 book ai didi

objective-c - Swift 函数覆盖 Objective-C 方法

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

我有一个 Objective-C 方法(在我的旧框架的名为“BaseViewModel”的类中声明)是:

-(void) updateFromManagedObject:(__kindof NSManagedObject *)entity;

我想在多个 Swift 类中使用它。每个 Swift 类都将使用 NSManagedObject 的特定子类并继承自“BaseViewModel”。当我尝试像这样覆盖此功能时:

override func updateFromManagedObject(entity: Person?) {
<#code#>
}

override func updateFromManagedObject(entity: Animal?) {
<#code#>
}

编译器返回:

Method does not override any method from its superclass

它只适用于:

override func updateFromManagedObject(entity: NSManagedObject?) {
<#code#>
}

如何使用 NSManagedObject 的特定继承类型? (也许有一个类 Generic-Type ?我尝试但也失败了:/)

最佳答案

overriding 的要点是当接收者是子类的实例时调用子类方法而不是父类(super class)方法。因此,子类方法的参数必须至少处理父类(super class)方法可以处理的所有参数。因此子类方法的参数类型必须与其覆盖的父类(super class)方法的参数类型相同或更通用。

关于objective-c - Swift 函数覆盖 Objective-C 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34882455/

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