当我在由模式UIViewController管理的UIWebView中加载包含嵌入的YouTube剪辑的页面时,我崩溃了这个堆栈跟踪:
OS Version: iPhone OS 4.0.2 (8A400) Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000 Crashed Thread: 0 Thread 0 Crashed: 0 YouTube 0x00002bac -[NSData(YTBase64) webSafeBase64Data] + 76 1 YouTube 0x000026aa -[YTDeviceAuthenticator _authenticate2] + 662 2 YouTube 0x00002a54 -[YTDeviceAuthenticator connectionDidFinishLoading:] + 504 3 Foundation 0x0003d422 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 62 4 Foundation 0x0003d3a4 _NSURLConnectionDidFinishLoading + 72 5 CFNetwork 0x00010e74 URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 160 6 CFNetwork 0x00004b70 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo*, long) + 96 7 CFNetwork 0x00004e62 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo*, long) + 850 8 CFNetwork 0x00004a60 URLConnectionClient::processEvents() + 64 9 CFNetwork 0x00004a12 URLConnection::multiplexerClientPerform(RunLoopMultiplexer*) + 30 10 CFNetwork 0x00004990 MultiplexerSource::perform() + 120 11 CFNetwork 0x0000490e MultiplexerSource::_perform(void*) + 2 12 CoreFoundation 0x00071a86 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6 13 CoreFoundation 0x00073768 __CFRunLoopDoSources0 + 376 14 CoreFoundation 0x00074504 __CFRunLoopRun + 224 15 CoreFoundation 0x0001d8e4 CFRunLoopRunSpecific + 224 16 CoreFoundation 0x0001d7ec CFRunLoopRunInMode + 52 17 GraphicsServices 0x000036e8 GSEventRunModal + 108 18 GraphicsServices 0x00003794 GSEventRun + 56 19 UIKit 0x000062a0 -[UIApplication _run] + 396 20 UIKit 0x00004e10 UIApplicationMain + 664 21 MyApp 0x00002e94 main (main.m:13) 22 MyApp 0x00002e30 start + 44
这不仅限于一个特定的URL;只要页面包含嵌入的YouTube剪辑,例如this one。
,就会发生这种情况其他网页可以正常运行而不会崩溃。
崩溃发生在我甚至可以点击实际的YouTube剪辑之前;在调用webViewDidFinishLoad:
委托方法之前(如果我设置了委托),它会在包含嵌入剪辑的页面完成加载时发生。
我删除了所有额外的代码,包括删除所有UIWebViewDelegate
引用,当它作为我的应用程序的一部分运行时,它仍以相同的方式崩溃。
奇怪的是,当我将代码解压缩到一个新的应用程序时,新的应用程序运行正常。
我也只能在运行iOS 4.02的iPhone 3GS和运行iOS 4.0的iPod Touch上看到这一点。
我不在iOS 3.1.3原版iPhone上看到此崩溃,我也没看到模拟器崩溃。
感谢您的帮助。
答案 0 :(得分:0)
您的{1}}视图控制器(或其他类)是UIWebViewDelegate
吗?如果是这样,您能否显示您实施的委托方法的代码?
答案 1 :(得分:0)
好的,我自己解决了这个问题。
我的代码中有一个NSData
类别,用于定义方法:
- (NSString*)base64Encoding
不幸的是,iOS 4中的YouTube插件似乎使用NSData
的隐藏方法(类别?):
- (NSData*)base64Encoding
毋庸置疑,我的类别覆盖了这种方法,导致问题。