在 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
。
我有一个 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.
简而言之,您无法在 Objective-C 代码的 CGImage
扩展中使用 someFunction
。