我有一个Objective-C项目,其中在Obj-C脚本中使用Swift脚本。
在Swift脚本之一中,我有一个类:
@objc public class VideoCapture: NSObject, AVCaptureVideoDataOutputSampleBufferDelegate {
~~bunch of functions~~
}
因为它是一个Obj-C项目,所以在它前面加上@obj,以便它们出现在我的($ project_name-Swift.h)头文件中。
对于我的头文件中写的内容,我得到了错误:
//头文件中的代码段:project_name-Swift.h
#import <AVFoundation/AVFoundation.h>. <— I added this to make sure that AVFoundation is present in the header file
SWIFT_CLASS("_TtC17FLIROneSDKExample12VideoCapture")
@interface VideoCapture : NSObject <AVCaptureVideoDataOutputSampleBufferDelegate> <<——!!! error: No type or protocol named 'AVCaptureVideoDataOutputSampleBufferDelegate'
- (void)captureOutput:(AVCaptureOutput * _Nonnull)output didOutputSampleBuffer:(CMSampleBufferRef _Nonnull)sampleBuffer fromConnection:(AVCaptureConnection * _Nonnull)connection;
- (void)captureOutput:(AVCaptureOutput * _Nonnull)output didDropSampleBuffer:(CMSampleBufferRef _Nonnull)sampleBuffer fromConnection:(AVCaptureConnection * _Nonnull)connection;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
我不知道是什么原因造成的,我想这与无法从头文件正确访问AVFoundation库有关。
有什么办法解决这个问题吗?
答案 0 :(得分:1)
尝试在快速导入的类顶部使用@objcMembers,这将确保您可以访问所有Objective-C代码。
答案 1 :(得分:1)
我有同样的问题。添加@objc
或@protocol
无济于事。我通过添加
#import <AVFoundation/AVFoundation.h>
移至PrefixHeader.pch
之前的#import <project_name-Swift.h>
文件。
我希望它能对某人有所帮助。
答案 2 :(得分:0)
您可能需要为@protocol
添加AVCaptureVideoDataOutputSampleBufferDelegate
。
@protocol AVCaptureVideoDataOutputSampleBufferDelegate;
将其放在@interface
文件中project_name-Swift.h
的上方。