-Swift.h标头文件中没有名为“ AVCaptureVideoDataOutputSampleBufferDelegate”的类型或协议

时间:2019-01-27 19:51:18

标签: ios objective-c swift xcode avfoundation

我有一个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库有关。

有什么办法解决这个问题吗?

3 个答案:

答案 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的上方。