Closed kinkenyuen closed 4 years ago
上图是你SDK内部对+[WKWebView handlesURLScheme:]做的方法交换,(BUWKWebViewClient继承WKWebView)。
查看交换方法的内部实现,如下
可以发现你SDK将+[BUWKWebViewClient bu_handlesURLScheme:]的IMP直接set到了WKWebView的handlesURLScheme:这个SEL内
因此待你SDK内做完这次方法交换后,外部再调用+[WKWebView handlesURLScheme:],会出现找不到SEL的crash
当调用[WKWebView handlesURLScheme:]时,会走到上面bu_handlesURLScheme:的实现,然后参数如果是非@"http"和@"https"时,就会出现如下调用+[WKWebView bu_handlesURLScheme:],很显然bu_handlesURLScheme:这个SEL没有在WKWebView里,而是在你SDK内部类BUWKWebViewClient
3000版本及后续版本已经解决
上图是你SDK内部对+[WKWebView handlesURLScheme:]做的方法交换,(BUWKWebViewClient继承WKWebView)。
查看交换方法的内部实现,如下
可以发现你SDK将+[BUWKWebViewClient bu_handlesURLScheme:]的IMP直接set到了WKWebView的handlesURLScheme:这个SEL内
因此待你SDK内做完这次方法交换后,外部再调用+[WKWebView handlesURLScheme:],会出现找不到SEL的crash
当调用[WKWebView handlesURLScheme:]时,会走到上面bu_handlesURLScheme:的实现,然后参数如果是非@"http"和@"https"时,就会出现如下调用+[WKWebView bu_handlesURLScheme:],很显然bu_handlesURLScheme:这个SEL没有在WKWebView里,而是在你SDK内部类BUWKWebViewClient