XCSourceEditorCommandInvocation swift 扩展导致 "unrecognized selector sent to instance" 异常

XCSourceEditorCommandInvocation swift extension causes "unrecognized selector sent to instance" exception

当我尝试将 swift 扩展添加到 XcodeKit 中的 classes(用于添加 Xcode 扩展的框架)时,编译器很乐意构建而没有任何错误,但是当代码运行时我得到以下异常:

-[XCSourceEditorCommandInvocation test]: unrecognized selector sent to instance 0x7fc60543f2b0

下面是可以重现异常的示例代码:

class SourceEditorCommand: NSObject, XCSourceEditorCommand {
    func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) -> Void {
        // Call extension method
        invocation.test() // <--- Exception thrown here

        completionHandler(nil)
    }
}

extension XCSourceEditorCommandInvocation {
    func test() {
        print("it works!")
    }
}

我过去在 swift 中扩展了 ObjC classes,没有任何问题,所以我有点卡在这里。

我试过:

目前 类 或 XcodeKit.framework 中的类型不支持 Objective-C 类别和 Swift 扩展。