diff --git a/Packages/OpenCCBridge/Sources/OpenCCBridge/OpenCCBridge.swift b/Packages/OpenCCBridge/Sources/OpenCCBridge/OpenCCBridge.swift index 18ea60ddd..8f8d9b3b2 100644 --- a/Packages/OpenCCBridge/Sources/OpenCCBridge/OpenCCBridge.swift +++ b/Packages/OpenCCBridge/Sources/OpenCCBridge/OpenCCBridge.swift @@ -29,7 +29,9 @@ import OpenCC /// Since SwiftyOpenCC only provide Swift classes, we create an NSObject subclass /// in Swift in order to bridge the Swift classes into our Objective-C++ project. public class OpenCCBridge: NSObject { - private static let shared = OpenCCBridge() + + @objc(sharedInstance) public static let shared = OpenCCBridge() + private var converter: ChineseConverter? private override init() { @@ -38,10 +40,10 @@ public class OpenCCBridge: NSObject { } /// Converts to Simplified Chinese. - /// + /// /// - Parameter string: Text in Traditional Chinese. /// - Returns: Text in Simplified Chinese. - @objc public static func convertToSimplified(_ string: String) -> String? { - shared.converter?.convert(string) + @objc public func convertToSimplified(_ string: String) -> String? { + converter?.convert(string) } } diff --git a/Packages/OpenCCBridge/Tests/OpenCCBridgeTests/OpenCCBridgeTests.swift b/Packages/OpenCCBridge/Tests/OpenCCBridgeTests/OpenCCBridgeTests.swift index 30cac4f0d..9aa20bfe5 100644 --- a/Packages/OpenCCBridge/Tests/OpenCCBridgeTests/OpenCCBridgeTests.swift +++ b/Packages/OpenCCBridge/Tests/OpenCCBridgeTests/OpenCCBridgeTests.swift @@ -27,7 +27,7 @@ import XCTest final class OpenCCBridgeTests: XCTestCase { func testTC2SC() throws { let text = "繁體中文轉簡體中文" - let converted = OpenCCBridge.convertToSimplified(text) + let converted = OpenCCBridge.shared.convertToSimplified(text) XCTAssert(converted == "繁体中文转简体中文") } } diff --git a/Source/InputMethodController.swift b/Source/InputMethodController.swift index 7d091760e..5ba4bac7c 100644 --- a/Source/InputMethodController.swift +++ b/Source/InputMethodController.swift @@ -302,7 +302,7 @@ extension McBopomofoInputMethodController { if Preferences.chineseConversionStyle == 1 { return text } - return Preferences.chineseConversionEngine == 1 ? VXHanConvert.convertToSimplified(from: text) : OpenCCBridge.convertToSimplified(text) ?? "" + return Preferences.chineseConversionEngine == 1 ? VXHanConvert.convertToSimplified(from: text) : OpenCCBridge.shared.convertToSimplified(text) ?? "" } let buffer = convertToSimplifiedChineseIfRequired(text) diff --git a/Source/LanguageModelManager.mm b/Source/LanguageModelManager.mm index 9cef327e0..8342c9e7c 100644 --- a/Source/LanguageModelManager.mm +++ b/Source/LanguageModelManager.mm @@ -114,7 +114,7 @@ + (void)setupDataModelValueConverter if (Preferences.chineseConversionEngine == 1) { text = [VXHanConvert convertToSimplifiedFrom:text]; } else { - text = [OpenCCBridge convertToSimplified:text]; + text = [[OpenCCBridge sharedInstance] convertToSimplified:text]; } return std::string(text.UTF8String); };