gpt4 book ai didi

ios - swift 3 : Xcode claims that a non-generic class is generic

转载 作者:行者123 更新时间:2023-11-28 21:19:54 24 4
gpt4 key购买 nike

转换为 Swift 3 后,我在 Obj-C 的可见性方面遇到了问题(Interface Builder 在运行时找不到 Controller 类)。所以我添加了 @objc 来调试:

@objc(ASSitesTableViewController)
class ASSitesTableViewController : GenericFRCTableVC<Site>

Xcode 吐回:

Generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C

但是这个类并不是真正通用的。它仅继承自专门化的类。

我知道对特殊类型进行子类化是一个长期目标,因为它在早期版本的 Swift 中不受支持,但它编译时没有提示。我没想到我的类(class)会保持通用。

我发现 Swift 文档的继承部分没有提到泛型,反之亦然。

基类是否必须是非泛型的才能使子类对 Obj-C 可见?

最佳答案

Does the base class have to be non-generic for the subclass to be visible to Obj-C?

是的。子类本身在其定义中没有通用占位符,但子类"is"它的父类(super class)。狗"is"四足动物(如果狗是四足动物的子类)。所以这个类"is"一个GenericFRCTableVC<Site> .好吧,Objective-C 无法理解 GenericFRCTableVC<Site>。所以它无法理解 ASSitesTableViewController。

After converting to Swift 3

我想你会发现在早期版本的 Swift 中你会遇到同样的问题。我认为这与向 Swift 3 的转换没有任何关系。

关于ios - swift 3 : Xcode claims that a non-generic class is generic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144073/

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