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

问题描述 投票:0回答:4

我有一个 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 库或其他东西有关。

有什么想法可以解决这个问题吗?

ios objective-c swift xcode avfoundation
4个回答
10
投票

我也有同样的问题。添加

@objc
@protocol
没有帮助。我通过添加来解决它

#import <AVFoundation/AVFoundation.h>

PrefixHeader.pch
之前的
#import <project_name-Swift.h>
文件。


1
投票

您可能需要为

@protocol
添加
AVCaptureVideoDataOutputSampleBufferDelegate

@protocol AVCaptureVideoDataOutputSampleBufferDelegate;

将其放在

@interface
文件中的
project_name-Swift.h
上方。


1
投票

尝试在您的 swift 导入类之上使用 @objcMembers,这将确保您能够访问所有 Objective-C 代码。


-1
投票

就我而言:添加@protocol youdelegate;进入 -Bridging-Header.h 文件。

© www.soinside.com 2019 - 2024. All rights reserved.