Реализация методов из библиотеки Objective C с помощью Swift
Я пытаюсь реализовать следующий метод в Swift:
Из класса FLIROneSDKImageReceiverDelegate, который находится в подклассе внутри моего класса ViewController следующим образом:
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 является классом.
2 ответа
С макушки головы, но попробуйте это:
func FLIROneSDKDelegateManager(delegateManager: FLIROneSDKDelegateManager!, didReceiveBlendedMSXRGBA8888Image msxImage: NSData!, imageSize size: CGSize) {
// method imp
}
Решение @Laxsnor в комментариях к ответу @aaron-wojnowski мне тоже помогло, спасибо обоим.
Для консолидации:
Проблема в конфликте, созданном именем FLIROneSDKDelegateManager
используется как имя класса и имя функции - что, кажется, хорошо в Objective-C, но не в Swift.
Замена класса FLIROneSDKDelegateManager
с NSObject
в параметре функции, кажется, решить проблему без побочных эффектов. Это должно быть сделано как в заголовочном файле протокола Objective-C, так и в исходном файле класса делегата Swift.
ПРИМЕЧАНИЕ. Я также обнаружил, что это же решение более широко применяется для быстрой разработки FLIROneSDK по адресу https://github.com/jruhym/flirmebaby.
Счастливого развития для FLIROne на Swift. (Я новичок в FLIROne и относительно новичок в Swift, поэтому извиняюсь, если мой язык не достаточно точен.)