【发布时间】:2015-05-28 01:38:22
【问题描述】:
@property (strong, nonatomic) UIViewController<UITableViewDelegate> *thing;
我想在 Swift 中实现这个 Objective-C 代码中的属性。所以这是我尝试过的:
class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController {
var thing: T!
}
这编译。当我从情节提要添加属性时,我的问题就来了。 @IBOutlet 标记生成编译器错误。
class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController {
@IBOutlet weak var anotherThing: UILabel! // error
var thing: T!
}
错误:
Variable in a generic class cannot be represented in Objective-C
我执行的对吗?我可以做些什么来修复或绕过这个错误?
编辑:
Swift 4 终于有了解决这个问题的办法。请参阅我的更新答案。
【问题讨论】:
-
几个月前我打算这样做,当时的共识是这是不可能的。如果那是不正确的,我会喜欢它。
标签: ios swift generics properties protocols