如何列出在Swift中实现给定协议的所有类?
假设我们有一个例子:
protocol Animal {
func speak()
}
class Cat:Animal {
func speak() {
print("meow")
}
}
class Dog: Animal {
func speak() {
print("Av Av!")
}
}
class Horse: Animal {
func speak() {
print("Hurrrr")
}
}
Run Code Online (Sandbox Code Playgroud)
这是我目前的(不可编译)方法:
func getClassesImplementingProtocol(p: Protocol) -> [AnyClass] {
let classes = objc_getClassList()
var ret = [AnyClass]()
for cls in classes {
if class_conformsToProtocol(cls, p) {
ret.append(cls)
}
}
return ret
}
func objc_getClassList() -> [AnyClass] {
let expectedClassCount = objc_getClassList(nil, 0)
let allClasses …Run Code Online (Sandbox Code Playgroud) 像objc_getClassList结构一样的东西.
只是给出一些上下文:在我们的单元测试中使用这个方法(对于类)来测试具有特定后缀的所有类都有对它们的测试.我们测试测试!