传递一个Swift类作为参数,然后调用一个类方法
我希望能够将类作为变量存储,以便稍后可以调用类方法,如下所示:
class SomeGenericItem: NSObject
{
var cellClass: AnyClass
init(cellClass: AnyClass)
{
self.cellClass = cellClass
}
func doSomething(p1: String, p2: String, p3: String)
{
self.cellClass.doSomething(p1, p2: p2, p3: p3)
}
}
class SomeClass: NSObject
{
class func doSomething(p1: String, p2: String, p3: String)
{
...
}
}
我想能够说一些像:
let someGenericItem = SomeGenericItem(cellClass: SomeClass.self)
someGenericItem.doSomething("One", p2: "Two", p3: "Three")
我试图弄清楚的是:
1)如何定义一个协议,以便我可以调用class func doSomething?
2)cellClass的声明需要什么?
3)电话会是什么样子?
协议不能定义类方法,但静态方法是好的。 你需要你的包装是通用的,并且指定一个'where'约束来保证包装类型符合你的协议。
例:
protocol FooProtocol
{
static func bar() -> Void
}
class FooishClass : FooProtocol
{
static func bar() -> Void
{
println( "FooishClass implements FooProtocol" )
}
}
class FooTypeWrapper< T where T: FooProtocol >
{
init( type: T.Type )
{
//no need to store type: it simply is T
}
func doBar() -> Void
{
T.bar()
}
}
使用:
let fooishTypeWrapper = FooTypeWrapper( type: FooishClass.self )
fooishTypeWrapper.doBar()
链接地址: http://www.djcxy.com/p/25753.html
上一篇: Pass a Swift class as parameter, and then call a class method out of it