Создание экземпляра класса React-Native bridged iOS - PullRequest
1 голос
/ 03 марта 2020

Я пишу свое собственное приложение, которое связывает и использует классы 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.

Любая помощь в этом была бы полезна, спасибо.

...