Я пишу свое собственное приложение, которое связывает и использует классы Swift, у меня работает мостовое соединение, и я могу вызывать функции для класса, который я создал. Я пытаюсь сделать так, чтобы мне пришлось создать экземпляр класса swift в реакции- js, но я не уверен, как это сделать.
Вот мои примеры кода:
Swift Класс:
import Foundation
@objc(Torch)
class Torch: NSObject
{
@objc static func requiresMainQueueSetup() -> Bool {return true}
@objc var isOn = false
@objc func turnOn() {
isOn = true
}
@objc func turnOff() {
isOn = false
}
@objc func getTorchStatus(_ callback: RCTResponseSenderBlock) {
callback([NSNull(), isOn])
}
}
Объектив C Класс:
#import <Foundation/Foundation.h>
#import "React/RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(Torch,NSObject)
RCT_EXTERN_METHOD(requiresMainQueueSetup)
RCT_EXTERN_METHOD(turnOn)
RCT_EXTERN_METHOD(turnOff)
RCT_EXTERN_METHOD(getTorchStatus: (RCTResponseSenderBlock)callback)
@end
Bridging-Header:
#import "React/RCTBridgeModule.h"
React-Native код:
import {NativeModules} from 'react-native';
var Torch = NativeModules.Torch;
Torch.turnOn()
Torch.getTorchStatus((error, isOn) => {
console.log(isOn)
});
Когда я запускаю приложение, оно устанавливает значение факела в true, а затем печатает его значение, получая его состояние.
Если я сделаю это снова
import {NativeModules} from 'react-native';
var Torch = NativeModules.Torch;
Torch.turnOn()
Torch.getTorchStatus((error, isOn) => {
console.log(isOn)
});
var NewTorch = NativeModules.Torch;
NewTorch.getTorchStatus((error, isOn) => {
console.log(isOn)
});
Это напечатает то же значение, что и раньше, как NewTorch - тот же экземпляр, что и Torch. Мне было интересно, как вы создаете новый экземпляр Torch, чтобы он имел свое собственное состояние вместо общего состояния. Или, если это вообще возможно, и мне нужно создать класс для управления экземплярами внутри swift.
Любая помощь в этом была бы полезна, спасибо.