我是objc的新手。我已經撰寫了一個使用 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。一些實作這一點的說明將不勝感激。
uj5u.com熱心網友回復:
這看起來不錯。
如果你想getLink()從你的 App Delegate 呼叫,你需要匯入 Xcode 在編譯代碼時創建的自動生成的 Swift Bridging Header File。這將允許 Objective-cAppDelegate.m檔案找到您公開的 swift 代碼。
#import <ProjectName-Swift.h>將允許您的 Swift 暴露給 AppDelegate,并且您已經標記了類和函式@objc,以便它們可見。
然后你只需要創建一個 AppLinkModule 的單例或共享實體(React Native 模塊都是靜態運行的),或者你需要實體化你的模塊類。
完成后,您可以在 AppDelegate 中呼叫此函式,如下所示:
[[[AppLinkModule ] shared ] getLink];
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/423059.html
標籤:
下一篇:錯誤:inside.UserProfile.user:(fields.E301)欄位定義了與模型“auth.User”的關系,該模型已被換出
