修复 1.8.2 WXApi 调用:用 Swift 简化后的方法名

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 <noreply@anthropic.com>
This commit is contained in:
joywayer
2026-06-23 09:13:08 +08:00
co-authored by Claude Opus 4.7
parent 05f1396645
commit 93bbbc3d59
@@ -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)
}
}