bytedance / Bytedance-UnionAD

MIT License
172 stars 53 forks source link

反馈一个SDK内的Bug,方法交换的crash #72

Closed kinkenyuen closed 4 years ago

kinkenyuen commented 4 years ago
Xnip2020-05-07_09-55-28

上图是你SDK内部对+[WKWebView handlesURLScheme:]做的方法交换,(BUWKWebViewClient继承WKWebView)。

查看交换方法的内部实现,如下

Xnip2020-05-07_09-59-07

可以发现你SDK将+[BUWKWebViewClient bu_handlesURLScheme:]的IMP直接set到了WKWebView的handlesURLScheme:这个SEL内

因此待你SDK内做完这次方法交换后,外部再调用+[WKWebView handlesURLScheme:],会出现找不到SEL的crash

Xnip2020-05-07_10-07-09 Xnip2020-05-07_10-08-02

当调用[WKWebView handlesURLScheme:]时,会走到上面bu_handlesURLScheme:的实现,然后参数如果是非@"http"和@"https"时,就会出现如下调用+[WKWebView bu_handlesURLScheme:],很显然bu_handlesURLScheme:这个SEL没有在WKWebView里,而是在你SDK内部类BUWKWebViewClient

yh980237697 commented 4 years ago

3000版本及后续版本已经解决