我正在构建一个带有 web 视图的简单应用程序来包装 OSX 的 HTML5 应用程序。Web 视图侦听来自应用程序的消息,然后调用一些 javascript 函数来发回一些数据。在我尝试将另一个页面加载到 Web 视图之前,这非常有效。看起来 web 视图在后台释放 ResourceLoadDelegate 然后尝试再次调用它,导致我的错误消息。
我的项目使用一个类作为一个巨大的应用程序委托,并且我将 UIDelegate、ResourceLoadDelegate 和 FrameLoadDelegate 都设置为“self”。如果我没有设置 ResourceLoadDelegate,我不会收到错误消息,但是我无法接收消息。
有谁知道我的问题可能是什么?这是我的代码:
我的标题:
@interface BFAppDelegate : NSObject <NSApplicationDelegate> {
WebView *webView;
}
@property (nonatomic, strong) IBOutlet WebView *webView;
@end
我的课:
@implementation BFAppDelegate
@synthesize webView;
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[self.webView setUIDelegate:self];
[self.webView setResourceLoadDelegate:self];
[self.webView setFrameLoadDelegate:self];
}
-(void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:message]];
[self.webView loadRequest:request];
}
@end