Сбой приложения при нажатии кнопки «Домой» на iPhone - PullRequest
0 голосов
/ 14 декабря 2011

В моем приложении для iPhone у меня есть UIWebView, куда я загружаю данные из файла xml, после загрузки, если я нажимаю кнопку «Домой» на своих iPhone и пытаюсь снова открыть свое приложение, чтобы загрузить его, а затем, если я нажимаю кнопку «Назад» иснова загрузите веб-просмотр и затем нажмите кнопку «Домой», попробуйте снова открыть приложение, оно вообще не запускается, его происходит сбой.В моем органайзере отчет о сбое выглядит так:

libSystem.B.dylib               0x33c30176 cache_remove_with_block + 18
1   CoreFoundation                  0x33ad9e52 __NSCacheApplicationDidEnterBackgroundCallBack + 18
2   CoreFoundation                  0x33a779a4 __cfnote_callback + 20
3   CoreFoundation                  0x33a4711c __CFXNotificationPost_old + 396
4   CoreFoundation                  0x33a46dbc _CFXNotificationPostNotification + 112
5   Foundation                      0x3361cd1c -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
6   UIKit                           0x320c1752 -[UIApplication _handleApplicationSuspend:eventInfo:] + 494
7   UIKit                           0x320667a6 -[UIApplication handleEvent:withNewEvent:] + 1910
8   UIKit                           0x32065ec2 -[UIApplication sendEvent:] + 38
9   UIKit                           0x32065900 _UIApplicationHandleEvent + 5084
10  GraphicsServices                0x33b0eefc PurpleEventCallback + 660
11  CoreFoundation                  0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
12  CoreFoundation                  0x33a556bc __CFRunLoopDoSource1 + 160
13  CoreFoundation                  0x33a47f76 __CFRunLoopRun + 514
14  CoreFoundation                  0x33a47c80 CFRunLoopRunSpecific + 224
15  CoreFoundation                  0x33a47b88 CFRunLoopRunInMode + 52
16  GraphicsServices                0x33b0e4a4 GSEventRunModal + 108
17  GraphicsServices                0x33b0e550 GSEventRun + 56
18  UIKit                           0x32099322 -[UIApplication _run] + 406
19  UIKit                           0x32096e8c UIApplicationMain + 664

как решить эту проблему?что может быть причиной этого?Любая помощь заранее благодарна.

1 Ответ

0 голосов
/ 30 января 2012

У нас была такая же проблема (на устройствах под управлением iOS 4.x только между прочим ..) Причиной этого было использование изменяемых объектов в кеше.Мы помещаем NSMutableDictionary в кеш и манипулируем им впоследствии.Затем, когда кэш был освобожден (чтобы его можно было освободить), что-то произошло, что позже привело к сбою приложения при приостановке.

Надеюсь, это также решит вашу проблему!:

Мы нашли решение благодаря этой записи на форуме разработчика .Похоже, что NSCache до iOS 4.3 не отменил свою регистрацию в центре уведомлений.

Мы решили эту проблему, создав простой подкласс NSCache и реализовав метод -dealloc следующим образом (ARCверсия):

- (void)dealloc;
{
    // NSCache had an issue on iOS prior to 4.3 where it didn't unregister from notifications and caused crashes
    // see https://devforums.apple.com/message/421845#421845
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Теперь используйте этот класс вместо NSCache, и все будет в порядке.Скрещенные пальцы.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...