10 objective-c swift
我的目的是在Swift中创建一个符合Objective-C协议的泛型类:
这堂课是:
class BaseViewFactoryImpl<T> : NSObject, BaseView {
func getNativeInstance() -> AnyObject {
return String("fsd")
}
}
Run Code Online (Sandbox Code Playgroud)
协议BaseView是:
@protocol BaseView < NSObject >
- (id)getNativeInstance;
@end
Run Code Online (Sandbox Code Playgroud)
编译器告诉我:
Type 'BaseViewFactoryImpl<T>' does not conform to protocol 'BaseView'
Run Code Online (Sandbox Code Playgroud)
如果我删除<T>那么没有错误.
这有什么不对?如何获得正确的泛型类实现?
如果您创建一个新的通用视图模型,当您尝试创建通用视图模型的任何子类时,您也需要将该子类声明为通用类。这有点烦人。
为了更好的方法,您可以使用 typealias 来声明实例的类型,而不是使用泛型:
protocol BaseView {
typealias T
func getNativeInstance() -> T!
}
class StringViewModel : BaseView {
typealias T = String
func getNativeInstance() -> String! {
return T()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |