【发布时间】:2010-07-21 11:54:35
【问题描述】:
我制作了一个示例应用程序,包括:WebView(显示 URL 的内容)、文本字段(包含 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
【问题讨论】:
-
说它会导致崩溃是不够的。发布堆栈跟踪。
-
另外,第一行(创建 liveStreamLink 的地方)完全没有必要。您可以直接在 -URLWithString: 中传递 [livestreamLinkTextField stringValue] ... 不必要的代码只是意味着更多的出错机会。在保持可读性的同时保持尽可能简单。
-
问题现在包含崩溃的堆栈跟踪