如何使用应用程序委托访问 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];
我是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];