实现Objective-C协议的Swift泛型类
我的目的是在Swift中创建一个符合Objective-C协议的泛型类: 课程为:实现Objective-C协议的Swift泛型类,objective-c,swift,Objective C,Swift,我的目的是在Swift中创建一个符合Objective-C协议的泛型类: 课程为: class BaseViewFactoryImpl<T> : NSObject, BaseView { func getNativeInstance() -> AnyObject { return String("fsd") } } 编译器告诉我: Type 'BaseViewFactoryImpl<T>' does not conform to protocol
class BaseViewFactoryImpl<T> : NSObject, BaseView {
func getNativeInstance() -> AnyObject {
return String("fsd")
}
}
编译器告诉我:
Type 'BaseViewFactoryImpl<T>' does not conform to protocol 'BaseView'
类型“BaseViewFactoryImpl”不符合协议“BaseView”
如果我删除
,则没有错误
这里怎么了?如何获得正确的泛型类实现?如果您创建了一个新的泛型视图模型,当您尝试创建泛型视图模型的任何子类时,您还需要将该子类声明为泛型类。这有点烦人 更好的方法是,您可以使用typealias来声明实例的类型,而不是使用泛型:
protocol BaseView {
typealias T
func getNativeInstance() -> T!
}
class StringViewModel : BaseView {
typealias T = String
func getNativeInstance() -> String! {
return T()
}
}
//BaseViewFactory.swift
class BaseViewFactoryImpl<T> : NSObject, BaseView {
func getNativeInstance() -> AnyObject {
return String("fsd")
}
你的代码应该可以工作。您是否创建了桥接头以导入obj-C协议文件?这适用于Swift 5:
类BaseViewFactoryImpl:NSObject,BaseView{
func getNativeInstance()->Any{
返回“消防处”
}
}
无生成错误:)对于泛型类,这是不可能的,请参阅以了解类似问题。
class BaseViewFactoryImpl<T> : NSObject, BaseView {
func getNativeInstance() -> AnyObject {
return String("fsd")
}
@protocol BaseView <NSObject>
- (id)getNativeInstance;
@end
#import "BaseClassProtocol.h"