如何使用应用程序委托访问 class 中编写的 swift 中的方法

How to access a method in a class written in swift using the app delegate

我是objc的新手。我写了一个 class 使用 swift 将它暴露给 JS 端。该文件中的内容如下所示,

import Foundation

@objc(AppLinkModule)
class AppLinkModule: NSObject{

  @objc
  static var appLink: String?

  @objc
  func setLink(link: String){
    AppLinkModule.appLink = link;
  }

  @objc
  func getLink(_ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
    resolve(AppLinkModule.appLink);
    AppLinkModule.appLink = nil;
  }
}

AppLinkModule.m文件如下,

#import "React/RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(AppLinkModule, NSObject)
RCT_EXTERN_METHOD(getLink)
@end

我真正想要的是从AppDelegate.m文件中调用setLink方法或者直接设置为静态变量appLink。一些实现此目的的说明将不胜感激。

这看起来不错。

如果你想从你的 App Delegate 调用 getLink(),你需要导入 Auto-generated Swift 桥接头文件,Xcode 在你编译时创建你的代码。这将允许 Objective-c AppDelegate.m 文件找到您公开的 swift 代码。

#import <ProjectName-Swift.h> 将允许您的 Swift 暴露给 AppDelegate,并且您已经标记了 class 和函数 @objc 因此它们将可见。

那么您只需要创建 AppLinkModule 的单例或共享实例(React Native 模块都是 运行 静态的)或者您需要实例化您的模块 class.

完成后,您可以在 AppDelegate 中调用此函数,如下所示:

[[[AppLinkModule ] shared ] getLink];