使用 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 的新手,所以如果我的语言不够精确,我深表歉意。)
我正在尝试在 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 的新手,所以如果我的语言不够精确,我深表歉意。)