找出swift协议的所有实现者的名字

Find out the name of all the implementers of swift protocol

是否有可能获得 swift 协议的所有实施者的名称..?如果是那么如何..?

我正在尝试编写公开具有所有静态方法的协议的 SDK,我不想在这里实现委托模式,因为我想获取所有实现者的名称并直接调用这些方法。

所以我是这样做的:

static func getClassesImplementingProtocol(_ protocolName: Protocol!) -> [AnyClass] {

    var result = [AnyClass]();

    let count: Int32 = objc_getClassList(nil, 0)

    guard count > 0 else {
        return result
    }

    let classes = UnsafeMutablePointer<AnyClass>.allocate(
        capacity: Int(count)
    )

    defer {
        classes.deallocate()
    }

    let buffer = AutoreleasingUnsafeMutablePointer<AnyClass>(classes)

    for i in 0..<Int(objc_getClassList(buffer, count)) {
        let someclass: AnyClass = classes[i]

        if class_conformsToProtocol(someclass, protocolName) {

            result.append(someclass);
        }
    }

    return result
}

感谢: