• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - React-native 桥接与 Swift 单例自定义类

[复制链接]
菜鸟教程小白 发表于 2022-12-11 22:39:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

今天,我尝试在我的 Javascript 代码中使用实现单例模式的自定义 Swift 类。我已经创建了 native 模块,但今天我遇到了这个错误:“ fatal error :使用未实现的初始化程序 'init()' for class

我猜是因为单例模式,但我无法理解我的错误......

这是我的代码:

AnalyticsTracker.swift

import Foundation
import Tracker


@objc(AnalyticsTracker)
class AnalyticsTracker: NSObject {


  static let shared = AnalyticsTracker(tracker: ATInternet.sharedInstance.defaultTracker)

  // MARK: -

  let tracker: Tracker

  // Initialization

  private init(tracker: Tracker) {
    self.tracker = tracker
  }

  @objc
  func viewScreen(screen: String) {
    self.tracker.screens.add(screen).sendView()
  }

  @objc
  func sendTouch(clickName: String, chapter1: String, chapter2: String, chapter3: String, level2: Int) {
    let gesture = self.tracker.gestures.add(clickName, chapter1: chapter1, chapter2: chapter2, chapter3:chapter3)
    gesture.level2 = level2
    gesture.sendTouch()
  }
}

以及将我的类(class)导出到我的 react-native 应用程序的模块:

AnalyticsTracker.m

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(AnalyticsTracker, NSObject)

RCT_EXTERN_METHOD(
                  sendTouch:
                  (NSString*)clickName
                  (NSString*)chapter1
                  (NSString*)chapter2
                  (NSString*)chapter3
                  (int)level2
)

@end

删除导出模块后错误消失。我真的不明白这个错误是什么意思......

如果有人有想法,将不胜感激



Best Answer-推荐答案


问题在于 React Native 桥接机制。 AFAIK 它不支持自定义初始化。作为一种解决方法,您可以创建一个在其导出方法中使用 AnalyticsTracker.shared 的帮助器类:

// RNAnalyticsTracker.swift

import Foundation

@objc(RNAnalyticsTracker)
class RNAnalyticsTracker: NSObject {

  @objc
  func viewScreen(screen: String) {
    AnalyticsTracker.shared.viewScreen(screen: screen)
  }

  @objc
  func sendTouch(clickName: String, chapter1: String, chapter2: String, chapter3: String, level2: Int) {
    AnalyticsTracker.shared.sendTouch(clickName: clickName, chapter1: chapter1, chapter2: chapter2, chapter3: chapter3, level2: level2)
  }
}

来源引用:https://gist.github.com/harveyconnor/7b0e778effaae302f512485c18881569

关于ios - React-native 桥接与 Swift 单例自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55472700/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap