我有一个 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 库或其他东西有关。
有什么想法可以解决这个问题吗?
我也有同样的问题。添加
@objc
或 @protocol
没有帮助。我通过添加来解决它
#import <AVFoundation/AVFoundation.h>
到
PrefixHeader.pch
之前的 #import <project_name-Swift.h>
文件。
您可能需要为
@protocol
添加 AVCaptureVideoDataOutputSampleBufferDelegate
。
@protocol AVCaptureVideoDataOutputSampleBufferDelegate;
将其放在
@interface
文件中的 project_name-Swift.h
上方。
尝试在您的 swift 导入类之上使用 @objcMembers,这将确保您能够访问所有 Objective-C 代码。
就我而言:添加@protocol youdelegate;进入 -Bridging-Header.h 文件。