// // MabAnalyticsEvents.swift // Pods // // Created by 250102 on 2025/5/10. // // AnalyticsEvents 单例 internal class AnalyticsEvents { // 静态单例实例 static let shared = AnalyticsEvents() // 私有初始化方法确保单例模式 private init() {} // 使用NSHashTable来存储弱引用的处理器 private var handlers = NSHashTable.weakObjects() func registerHandler(handler: AnalyticsEventHandler) { handlers.add(handler as AnyObject) } func unregisterHandler(handler: AnalyticsEventHandler) { for existingHandler in handlers.allObjects { if let existing = existingHandler as? AnalyticsEventHandler, existing === handler as AnyObject { handlers.remove(existingHandler) break } } } func onEvent(name: String, param: [String: Any]? = nil) { for case let handler as AnalyticsEventHandler in handlers.allObjects { handler.onEvent(name: name, param: param) } } func onEvent(name: String, pairs: (String, any Any)...) { let paramMap = Dictionary(uniqueKeysWithValues: pairs) onEvent(name: name, param: paramMap) } } // AnalyticsEventHandler 协议 - 不需要遵循Hashable public protocol AnalyticsEventHandler: AnyObject { func onEvent(name: String, param: [String: Any]?) }