From 93bbbc3d597974da97bed55a59999f7c9dae3967 Mon Sep 17 00:00:00 2001 From: joywayer Date: Tue, 23 Jun 2026 09:13:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=201.8.2=20WXApi=20=E8=B0=83?= =?UTF-8?q?=E7=94=A8=EF=BC=9A=E7=94=A8=20Swift=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E6=96=B9=E6=B3=95=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Swift 编译器对 ObjC API 自动应用名称简化规则(Swift 3+ SE-0044), 即使是 1.x 老 SDK header 也会被简化。ObjC selector 不变,运行时 仍调 +[WXApi getApiVersion] / +[WXApi sendReq:],但 Swift 端必须 写简化后的名字: - ObjC +(NSString *)getApiVersion → Swift WXApi.getVersion() - ObjC +(BOOL)sendReq:(BaseReq*)req → Swift WXApi.send(_:) 错误信息里 Swift 编译器明确给出:"has been renamed to 'getVersion()'" + "obsoleted in Swift 3"。 注释里同步说明 selector 与 Swift 名映射关系,避免未来维护者误以为 我们调到的是 2.x SDK 的 getVersion(实际仍是 1.8.2 的 getApiVersion)。 Co-Authored-By: Claude Opus 4.7 --- ylgamehall/Source/SDK/WeChat/WeChatManager.swift | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ylgamehall/Source/SDK/WeChat/WeChatManager.swift b/ylgamehall/Source/SDK/WeChat/WeChatManager.swift index dcbcee3..25133df 100644 --- a/ylgamehall/Source/SDK/WeChat/WeChatManager.swift +++ b/ylgamehall/Source/SDK/WeChat/WeChatManager.swift @@ -41,7 +41,9 @@ public final class WeChatManager: NSObject { public func authorize() async throws -> WXAuthCodePayload { print("[WeChat] authorize() 开始") print("[WeChat] - WXApi.isWXAppInstalled = \(WXApi.isWXAppInstalled())") - print("[WeChat] - WXApi.getApiVersion = \(WXApi.getApiVersion() ?? "nil")") + // ObjC 端 selector 是 +getApiVersion,但 Swift 编译器自动简化为 getVersion() + // (Swift 3+ ObjC name 简化规则;运行时仍调 +[WXApi getApiVersion]) + print("[WeChat] - WXApi.getVersion = \(WXApi.getVersion() ?? "nil")") let state = UUID().uuidString return try await withCheckedThrowingContinuation { cont in authPending[state] = cont @@ -143,7 +145,9 @@ public final class WeChatManager: NSObject { } // 1.x: sendReq BOOL 返回;分享回包通过 SceneDelegate.openURLContexts → // WXApi.handleOpen(url:delegate:WeChatManager.shared) → onResp 路径到达。 - WXApi.sendReq(req) + // ObjC selector +sendReq:,Swift 简化为 send(_:)(去 Req 后缀)。 + // 运行时仍调 +[WXApi sendReq:] + WXApi.send(req) } } @@ -168,7 +172,9 @@ public final class WeChatManager: NSObject { case .session: req.scene = Int32(WXSceneSession.rawValue) case .timeline: req.scene = Int32(WXSceneTimeline.rawValue) } - WXApi.sendReq(req) + // ObjC selector +sendReq:,Swift 简化为 send(_:)(去 Req 后缀)。 + // 运行时仍调 +[WXApi sendReq:] + WXApi.send(req) } }