gpt4 book ai didi

ios - 将 Swift 框架导入 Obj-C

转载 作者:行者123 更新时间:2023-12-05 06:07:53 27 4
gpt4 key购买 nike

我有像这样用 Swift 编写的框架。

import Foundation
import WebKit
import ObjectiveC

public extension WKWebView {

public func someFunc(_ completionHandler:@escaping (_ capturedImage: UIImage?) -> Void) {
//Some code
}
}

当我构建框架并导入到使用 Cocoapods 作为依赖管理器的 Objective-C 代码时。我不能调用上面的 someFunc 函数。错误是这样说的:

No visible @interface for 'WKWebView' declares the selector 'someFunc'

这就是我在 Objective-C 中实现 Swift 框架的方式:

#import <Foundation/Foundation.h>
#import <ProjectName-umbrella.h>
@implementation CapturerDefault
- (void)captureWebViewScreenWith:(UIView *)containerView
andCompletionHandler:(void (^)(UIImage *))completion {
WKWebView *webView = [self findWebViewInViewController:containerView];

[webView someFunc: resultImage] //The error show here.
}
}

怎么了?我错过了什么吗?

最佳答案

我尝试了以下步骤并且对我有用:

  1. 不要像这样在 objc 文件中导入 swift 文件:#import "ExampleFile.swift"而是使用 #import "ProjectName-Swift.h"
  2. 确保在要导入到 objc 的 swift 代码中使用 @objc 语句

Swift 文件:

import WebKit

extension WKWebView {
@objc public func someFunc() {

}
}

Objective-C 文件:

#import "ViewController.h"
#import "Sample-Swift.h"
#import <WebKit/WebKit.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.

WKWebView *wbView = [[WKWebView alloc]init];

[wbView someFunc];
}

归功于: "Expected ';' after top level declarator" under Swift

关于ios - 将 Swift 框架导入 Obj-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65284998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com