UIWebView падает в конце загрузки страницы, содержащей встроенные клипы YouTube в iOS 4.0x - PullRequest
0 голосов
/ 05 сентября 2010

Когда я загружаю страницу, которая содержит встроенные клипы YouTube, в UIWebView, управляемый модальным UIViewController, я выхожу из строя со следующей трассировкой стека:

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, например этот .

Другие веб-страницы загружаются нормально без сбоев.

Сбой происходит до того, как я могу дажеперейти к клику на актуальный клип на YouTube;это происходит, когда страница, содержащая встроенный клип, завершает загрузку до вызова метода делегата webViewDidFinishLoad: (если я установил делегат).

Я удалил весь свой дополнительный код, включая удаление всех ссылок UIWebViewDelegateи он по-прежнему вылетает так же, когда работает как часть моего приложения.

Странно, когда я извлекаю код в новое приложение, новое приложение работает нормально.

Я также вижу толькоэто на iPhone 3GS под управлением iOS 4.02 и iPod Touch под управлением iOS 4.0.

Я не вижу этот сбой на исходном iPhone iOS 3.1.3 и не вижу сбоя наэмулятор.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 08 октября 2010

ОК, я решил это сам.

В моем коде была категория NSData, которая определяла метод:

- (NSString*)base64Encoding

К сожалению, плагин YouTube в iOS 4, похоже, использует скрытый метод (категории?) NSData:

- (NSData*)base64Encoding

Само собой разумеется, моя категория переопределяла этот метод, вызывая проблему.

0 голосов
/ 05 сентября 2010

Ваш контроллер вида (или другой класс) UIWebViewDelegate для вашего UIWebView?Если да, можете ли вы показать код для методов делегата, которые вы реализовали?

...