@@ -24,10 +24,10 @@ + (id)bridgeForWebView:(UIWebView *)webView webViewDelegate:(id<UIWebViewDelegat
2424- (void )webViewDidFinishLoad : (UIWebView *)webView {
2525 if (webView != self.webView ) { return ; }
2626
27- if (![[self . webView stringByEvaluatingJavaScriptFromString: @" typeof WebViewJavascriptBridge == 'object'" ] isEqualToString: @" true" ]) {
27+ if (![[webView stringByEvaluatingJavaScriptFromString: @" typeof WebViewJavascriptBridge == 'object'" ] isEqualToString: @" true" ]) {
2828 NSString *filePath = [[NSBundle mainBundle ] pathForResource: @" WebViewJavascriptBridge.js" ofType: @" txt" ];
2929 NSString *js = [NSString stringWithContentsOfFile: filePath encoding: NSUTF8StringEncoding error: nil ];
30- [self . webView stringByEvaluatingJavaScriptFromString: js];
30+ [webView stringByEvaluatingJavaScriptFromString: js];
3131 }
3232
3333 if (self.startupMessageQueue ) {
@@ -37,39 +37,43 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView {
3737 self.startupMessageQueue = nil ;
3838 }
3939
40- if (self.webViewDelegate && [self .webViewDelegate respondsToSelector: @selector (webViewDidFinishLoad: )]) {
41- [self .webViewDelegate webViewDidFinishLoad: webView];
40+ __strong typeof (self.webViewDelegate ) strongDelegate = self.webViewDelegate ;
41+ if (strongDelegate && [strongDelegate respondsToSelector: @selector (webViewDidFinishLoad: )]) {
42+ [strongDelegate webViewDidFinishLoad: webView];
4243 }
4344}
4445
4546- (void )webView : (UIWebView *)webView didFailLoadWithError : (NSError *)error {
4647 if (webView != self.webView ) { return ; }
47- if (self.webViewDelegate && [self .webViewDelegate respondsToSelector: @selector (webView:didFailLoadWithError: )]) {
48- [self .webViewDelegate webView: self .webView didFailLoadWithError: error];
48+ __strong typeof (self.webViewDelegate ) strongDelegate = self.webViewDelegate ;
49+ if (strongDelegate && [strongDelegate respondsToSelector: @selector (webView:didFailLoadWithError: )]) {
50+ [strongDelegate webView: webView didFailLoadWithError: error];
4951 }
5052}
5153
5254- (BOOL )webView : (UIWebView *)webView shouldStartLoadWithRequest : (NSURLRequest *)request navigationType : (UIWebViewNavigationType)navigationType {
5355 if (webView != self.webView ) { return YES ; }
5456 NSURL *url = [request URL ];
57+ __strong typeof (self.webViewDelegate ) strongDelegate = self.webViewDelegate ;
5558 if ([[url scheme ] isEqualToString: kCustomProtocolScheme ]) {
5659 if ([[url host ] isEqualToString: kQueueHasMessage ]) {
5760 [self _flushMessageQueue ];
5861 } else {
5962 NSLog (@" WebViewJavascriptBridge: WARNING: Received unknown WebViewJavascriptBridge command %@ ://%@ " , kCustomProtocolScheme , [url path ]);
6063 }
6164 return NO ;
62- } else if (self. webViewDelegate && [self .webViewDelegate respondsToSelector: @selector (webView:shouldStartLoadWithRequest:navigationType: )]) {
63- return [self .webViewDelegate webView: webView shouldStartLoadWithRequest: request navigationType: navigationType];
65+ } else if (strongDelegate && [strongDelegate respondsToSelector: @selector (webView:shouldStartLoadWithRequest:navigationType: )]) {
66+ return [strongDelegate webView: webView shouldStartLoadWithRequest: request navigationType: navigationType];
6467 } else {
6568 return YES ;
6669 }
6770}
6871
6972- (void )webViewDidStartLoad : (UIWebView *)webView {
7073 if (webView != self.webView ) { return ; }
71- if (self.webViewDelegate && [self .webViewDelegate respondsToSelector: @selector (webViewDidStartLoad: )]) {
72- [self .webViewDelegate webViewDidStartLoad: webView];
74+ __strong typeof (self.webViewDelegate ) strongDelegate = self.webViewDelegate ;
75+ if (strongDelegate && [strongDelegate respondsToSelector: @selector (webViewDidStartLoad: )]) {
76+ [strongDelegate webViewDidStartLoad: webView];
7377 }
7478}
7579
0 commit comments