使用 Swift 从 Objective C 库实现方法

Implementing Methods from Objective C Library with Swift

我正在尝试在 swift 中实现以下方法:

来自 class FLIROneSDKImageReceiverDelegate,它在我的 ViewController class 中被子class 编辑为:

class ViewController: UIViewController, FLIROneSDKImageReceiverDelegate,
    FLIROneSDKStreamManagerDelegate,
                        FLIROneSDKImageEditorDelegate{

请注意,我已经创建了桥接头等

在FLIROneSDKImageReceiverDelegate头文件中:

- (void) FLIROneSDKDelegateManager:(FLIROneSDKDelegateManager *)delegateManager didReceiveBlendedMSXRGBA8888Image:(NSData *)msxImage imageSize:(CGSize)size;

我认为这是实现此功能的正确方法是错误的吗?

func FLIROneSDKDelegateManagerdidReceiveBlendedMSXRGBA8888ImageimageSize(delegateManager: FLIROneSDKDelegateManager!, msxImage: NSData, size: CGSize){

请注意,FLIROneSDKDelegateManager 是一个 class。

不在我的脑海中,但试试这个:

func FLIROneSDKDelegateManager(delegateManager: FLIROneSDKDelegateManager!, didReceiveBlendedMSXRGBA8888Image msxImage: NSData!, imageSize size: CGSize) {

    // method imp

}

@aaron-wojnowski 对答案的评论中@Laxsnor 的解决方案也帮助了我,谢谢。

合并:

问题是名称 FLIROneSDKDelegateManager 被用作 class 名称和函数名称所造成的冲突 - 这在 Objective-C 中似乎可以,但在Swift.

将函数参数中的 class FLIROneSDKDelegateManager 替换为 NSObject 似乎可以无副作用地解决问题。这必须在 Objective-C 协议头文件和 Swift 委托 class 源文件中完成。

注意 我还发现同样的解决方案更广泛地应用于 Swift-ify 整个 FLIROneSDK https://github.com/jruhym/flirmebaby.

祝您在 Swift 上为 FLIROne 开发愉快。 (我是 FLIROne 的新手,也是 Swift 的新手,所以如果我的语言不够精确,我深表歉意。)