1

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

-[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 类,没有任何问题,所以我有点卡在这里。

我试过了:

  • @objc在方法声明之前添加。
  • 添加public到扩展和方法。
  • 我没有扩展类集群,所以它可能不是这个问题
  • 我没有扩展协议,所以可能不是这个问题
4

1 回答 1

2

Neither Objective-C categories nor Swift extensions are supported on the classes or types in XcodeKit.framework at this time.

于 2018-02-03T20:35:30.707 回答