Tak więc zdarzało się dość często w Crashlytics, zarówno na iPadzie, jak i iPadzie 2, z systemem iOS 5. Wygląda na to, że spowodowało to ostrzeżenie o pamięci, ale ślad stosu nie działa. t odniesienia któregokolwiek z mojego kodu aplikacji, zaledwie ramy iOS:UIViewController purgeMemoryForReason: Awaria na iOS 5
0 libobjc.A.dylib objc_msgSend + 15
1 UIKit -[UIViewController purgeMemoryForReason:] + 64
2 Foundation __57-[NSNotificationCenter addObserver: selector: name: object:]_block_invoke_0 + 18
3 CoreFoundation ___CFXNotificationPost_block_invoke_0 + 70
4 CoreFoundation _CFXNotificationPost + 1406
5 Foundation -[NSNotificationCenter postNotificationName: object: userInfo:] + 66
6 Foundation -[NSNotificationCenter postNotificationName: object:] + 30
7 UIKit -[UIApplication _performMemoryWarning] + 80
8 UIKit -[UIApplication _receivedMemoryNotification] + 174
9 libdispatch.dylib _dispatch_source_invoke + 516
10 libdispatch.dylib _dispatch_queue_invoke + 50
11 libdispatch.dylib _dispatch_main_queue_callback_4CF + 156
12 CoreFoundation __CFRunLoopRun + 1268
13 CoreFoundation CFRunLoopRunSpecific + 300
14 CoreFoundation CFRunLoopRunInMode + 104
15 GraphicsServices GSEventRunModal + 156
16 UIKit UIApplicationMain + 1090
17 500px iOS main.m line 12
mam google wysokie i niskie, ale nie można znaleźć żadnych rozwiązań do tego. Wygląda na to, że jest to spowodowane nadmiernym zwolnieniem instancji UIViewController, ale używam ARC, więc nie widzę, jak to możliwe.
Brakuje mi możliwości podejścia do tego problemu. Nie mogę nawet stwierdzić, która przyczyna problemu powoduje podklasa UIViewController. Próbowałem odtworzyć problem w symulatorze i na urządzeniu, ale nie mogę znaleźć przyczyny. Czy ktoś widział coś takiego lub ma sugestie dotyczące podejścia do powielania problemu?
Interesujące. Zwykle następnym krokiem na stosie byłoby wywołanie unloadViewIfReloadable dla tego kontrolera viewController. Teraz, gdy widzimy teraz awarię, oznacza to, że ta metoda nie została jeszcze osiągnięta lub że mamy już za sobą ten krok. W drugim przypadku sprawdź implementacje metody viewDidUnload. To byłby następny krok, który bym rozważył. Jako standardową rekomendację włącz zombie i wyzwolić ostrzeżenie o pamięci na symulatorze. – Till
Dam ci ten strzał i wrócę do ciebie. Dzięki! –