다음 충돌 보고서가 있습니다. 그것은 iOS 8에서만 발생합니다. 나는 그것을 재현하는 방법을 정확히 알고 있지만 내 코드에서 문제가 어디에 있는지 평생 알 수 없습니다. 중단 점을 사용하고 앱을 단계별로 실행하려고하면 충돌이 발생하지 않습니다. 내 앱에서 문제가 어디에 있는지 어떻게 찾을 수 있습니까?
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x10
Crashed Thread: 0
Application Specific Information:
objc_msgSend() selector name: respondsToSelector:
Thread 0 Crashed:
0 libobjc.A.dylib 0x00000001974b3bd0 objc_msgSend + 16
1 UIKit 0x000000018ab960f4 -[UIToolbar _didMoveFromWindow:toWindow:] + 108
2 UIKit 0x000000018aa30d44 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 700
3 UIKit 0x000000018aa30d44 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 700
4 UIKit 0x000000018aa30d44 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 700
5 UIKit 0x000000018aa303dc __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 140
6 UIKit 0x000000018aa302bc -[UIView(Hierarchy) _postMovedFromSuperview:] + 480
7 UIKit 0x000000018aa3c0b0 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1788
8 UIKit 0x000000018ac1c368 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 1432
9 UIKit 0x000000018aa42b6c +[UIView(Animation) performWithoutAnimation:] + 84
10 UIKit 0x000000018ac1bb2c -[_UINavigationParallaxTransition animateTransition:] + 852
11 UIKit 0x000000018abd7b70 -[UINavigationController _startCustomTransition:] + 3032
12 UIKit 0x000000018aae9ef0 -[UINavigationController _startDeferredTransitionIfNeeded:] + 464
13 UIKit 0x000000018aae9cbc -[UINavigationController __viewWillLayoutSubviews] + 52
14 UIKit 0x000000018aae9c3c -[UILayoutContainerView layoutSubviews] + 196
15 UIKit 0x000000018aa31760 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 576
16 QuartzCore 0x000000018a379e1c -[CALayer layoutSublayers] + 148
17 QuartzCore 0x000000018a374884 CA::Layer::layout_if_needed(CA::Transaction*) + 316
18 QuartzCore 0x000000018a374728 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 28
19 QuartzCore 0x000000018a373ebc CA::Context::commit_transaction(CA::Transaction*) + 272
20 QuartzCore 0x000000018a373c3c CA::Transaction::commit() + 524
21 QuartzCore 0x000000018a36d364 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 76
22 CoreFoundation 0x0000000185fac2a4 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 28
23 CoreFoundation 0x0000000185fa9230 __CFRunLoopDoObservers + 356
24 CoreFoundation 0x0000000185fa9610 __CFRunLoopRun + 832
25 CoreFoundation 0x0000000185ed52d4 CFRunLoopRunSpecific + 392
26 GraphicsServices 0x000000018f59b6fc GSEventRunModal + 164
27 UIKit 0x000000018aa9afac UIApplicationMain + 1484
28 MyAppName 0x00000001001b8ae0 main (main.m:16)
29 libdyld.dylib 0x0000000197b1ea08 start + 0
나는 그것을 재현하는 방법을 정확히 알고있다
그것만으로도 금으로 무게가 나갑니다.
이것은 메모리 관리 문제입니다. 좀비가 켜진 상태에서 충돌 조건을 복제해야합니다 . 포인터 아래에서 일부 개체가 사라졌고 좀비가 그 개체가 무엇인지 알려줍니다.
충돌의 순간은 아마도 문제 의 원인 과 관련이 없다는 것을 명심하십시오 . 충돌의 순간은 진단용 일뿐입니다. 사라진 물체, 아마도 오래 전에 사라 졌을 것입니다. 그러나 누군가가 메시지를 보내려고 시도하는 것은 이제야 더 이상 집에 없다는 것을 알게됩니다.
(예를 들어, delegate
델리게이트가 파괴 된 코코아 클래스는 이런 종류의 문제를 일으킬 수 있습니다. 델리게이트는 유지되지 않으므로 Cocoa 클래스는 어떤 일이 발생했는지 알지 못합니다. 해결책은 다음이 필요합니다. 를 설정하기 delegate
에 nil
그 대리인이 존재 외출 전에 그 특정 문제입니다 말하고 있지 않다;.. 난 그냥 이런 일이 발생하는 방법의 예를주는거야)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다