在 Objective-C 中使用 Swift 扩展方法

Using a Swift extension method in Objective-C

我有一个 objective-c 项目,其中包含一个 swift 文件。我创建了桥接 header 并将 ProjectSwift.h 导入主文件等

我正在尝试使用 Swift 文件中存储的扩展中的方法,但对语法感到困惑。当它是 class 方法时,我在 Swift 方法前面使用了 @objc,但目前使用扩展时我没有 @objc 或 @nonobjc(当我将 @objc 放在扩展声明前面时,我得到:

Method cannot be in an @objc extension of a class (without @nonobjc) because Core Foundation types are not classes in Objective-C

如果我在个别方法前尝试@objc,我得到:

Method cannot be marked @objc because Core Foundation types are not classes in Objective-C

我的Swift代码:

extension CGImage {
    public func someFunction(var1: Int, var2: Int){
        return someThing(someVariables)
    }
}

我的Objective-C:

#import "MyProject-Swift.h"

CGImage *temp = someFunction(var1, var2);//Must use 'struct' tag to refer to type 'CGImage'

#import "MyProject-Swift.h"

struct CGImage *temp = someFunction(var1, var2); //Implicit declaration of function 'someFunction' is invalid in C99

而且该方法没有显示自动完成,所以我猜我搞砸了我的 ObjC 代码中的语法,或者我需要在我的 Swift 代码中使用一些不同的 @objc 扩展版本。

错误说明一切。 CGImage 不是 Objective-C 中的 class。您不能在 Objective-C 中对 CGImage 使用 Swift 扩展名。如果 Swift 扩展位于 Objective-C.

中的 class,则您只能在 Objective-C 中使用 Swift 扩展

简而言之,您无法在 Objective-C 代码的 CGImage 扩展中使用 someFunction