我制作了一个示例应用程序,包括:WebView(显示URL的内容),textfield(包含URL),按钮(在WebView中加载URL)。
我使用此方法在WebView中显示内容:
- (IBAction)displayAction:(id)sender{
NSString *liveStreamLink = [[NSString alloc] initWithString:[livestreamLinkTextField stringValue]];
[[livestreamDisplayView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:liveStreamLink]]];
}
我在Leopard和Snow Leopard中制作了这个应用程序。
正常链接(例如 - https://stackoverflow.com/)在两个应用程序中都正确打开,但是当我尝试使用诸如 - http://www.xyz.com/tools/gauges/livestream.php?data=123456之类的链接时(注意:此链接返回图形),在应用程序开发中在豹子,它导致崩溃。 Snow Leopard开发的应用程序适用于所有类型的链接。
任何人都可以告诉我它可能是什么原因以及解决它的一些解决方案?
堆栈跟踪如下:
0 0x928252e6 in Debugger
1 0x1b7e8c15 in dyld_stub_sprintf
2 0x1b7e8ecf in NP_Initialize
3 0x90f0599f in -[WebNetscapePluginPackage _tryLoad]
4 0x90f054d7 in -[WebNetscapePluginPackage load]
5 0x90f0a8af in -[WebNetscapePluginDocumentView initWithFrame:pluginPackage:URL:baseURL:MIMEType:attributeKeys:attributeValues:loadManually:element:]
6 0x90ef41da in WebFrameLoaderClient::createPlugin
7 0x930bd908 in WebCore::FrameLoader::loadPlugin
8 0x936ae0da in WebCore::FrameLoader::requestObject
9 0x930bc409 in WebCore::RenderEmbeddedObject::updateWidget
10 0x92f32e65 in WebCore::FrameView::updateWidgets
11 0x92f329c1 in WebCore::FrameView::performPostLayoutTasks
12 0x92f22e33 in WebCore::FrameView::layout
13 0x9306f72b in WebCore::Timer<WebCore::FrameView>::fired
14 0x92f9e94e in WebCore::ThreadTimers::sharedTimerFiredInternal
15 0x92f9e822 in WebCore::ThreadTimers::sharedTimerFired
16 0x93860624 in WebCore::timerFired
17 0x9621a70b in __CFRunLoopRun
18 0x96218094 in CFRunLoopRunSpecific
19 0x96217ec1 in CFRunLoopRunInMode
20 0x96e48f9c in RunCurrentEventLoopInMode
21 0x96e48d51 in ReceiveNextEventCommon
22 0x96e48bd6 in BlockUntilNextEventMatchingListInMode
23 0x902b0a89 in _DPSNextEvent
24 0x902b02ca in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
25 0x9027255b in -[NSApplication run]
26 0x9026a5ed in NSApplicationMain
27 0x000029ee in start at ESTableView.m:1278
答案 0 :(得分:0)
我猜想这不是你的错,而是早期版本的WebKit的错。猜测的原因是什么?
它适用于Snow Leopard但不适用于Leopard。
崩溃完全在WebCore中,而不是您的代码。
第3,4行和第4行5显示WebCore正在为你正在加载的URL实例化一个插件,这就是崩溃似乎正在发生的地方。
Snow Leopard中包含的WebKit以不同的方式处理插件(隔离它们,因此它们的崩溃不会影响整个事情)但是这种额外的注意力不是Leopard中WebKit的一部分。
答案 1 :(得分:0)
我发现每当它崩溃时它都会显示msg:Debugger()被调用。所以我检查了Xcode运行设置,发现 - 选择了Stop on Debugger()/ DebugStr()。当我取消选择它并重新执行应用程序时,它工作并没有崩溃。
任何人都可以验证关闭:在Debugger()/ DebugStr()上停止,不会造成任何麻烦吗?
谢谢,
莫瑙伊