2017-03-08 4 views
0

내 애플리케이션에서 일관된 동작을하지 못합니다. 수신 된 동일한 단계를 수행 한 후에도 무승부 호출이 MyView 번으로 수신되지 않는 경우가 있습니다.-drawRect : 메시지가 NSView로 보내지는 원인을 알 수있는 방법이 있습니까?

것은이 drawRect에 대한 역 추적에, 여기

를 송신하는 메시지가 나타납니다 우리의 코드 내에서 무슨 일이 일어나고 있는지 말해 프레임이 예를 들어 백 트레이스가되어 있습니다되지 않습니다 (상위 2 프레임은하지 않습니다 문제) :

2 MyApp        0x00000001000112a5 -[MyView drawRect:] + 1429 
3 AppKit        0x00007fff8bfc87be -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1331 
4 AppKit        0x00007fff8bfc8156 __46-[NSView(NSLayerKitGlue) drawLayer:inContext:]_block_invoke + 242 
5 AppKit        0x00007fff8bfc7caf -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 2403 
6 AppKit        0x00007fff8bfc7341 -[NSView(NSLayerKitGlue) drawLayer:inContext:] + 108 
7 QuartzCore       0x00007fff88045b19 CABackingStoreUpdate_ + 3494 
8 QuartzCore       0x00007fff88044d6d ___ZN2CA5Layer8display_Ev_block_invoke + 59 
9 QuartzCore       0x00007fff88044759 _ZN2CA5Layer8display_Ev + 1565 
10 AppKit        0x00007fff8bfc6318 _NSBackingLayerDisplay + 641 
11 AppKit        0x00007fff8bfb8878 -[_NSViewBackingLayer display] + 818 
12 QuartzCore       0x00007fff880364a5 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 603 
13 QuartzCore       0x00007fff88035fcd _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 35 
14 QuartzCore       0x00007fff880354a1 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 
15 QuartzCore       0x00007fff880350ec _ZN2CA11Transaction6commitEv + 508 
16 QuartzCore       0x00007fff88040977 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 71 
17 CoreFoundation      0x00007fff88f3efc7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 
18 CoreFoundation      0x00007fff88f3ef37 __CFRunLoopDoObservers + 391 
19 CoreFoundation      0x00007fff88f1de58 CFRunLoopRunSpecific + 328 
20 HIToolbox       0x00007fff93726935 RunCurrentEventLoopInMode + 235 
21 HIToolbox       0x00007fff9372676f ReceiveNextEventCommon + 432 
22 HIToolbox       0x00007fff937265af _BlockUntilNextEventMatchingListInModeWithFilter + 71 
23 AppKit        0x00007fff8be5fdf6 _DPSNextEvent + 1067 
24 AppKit        0x00007fff8be5f226 -[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 454 
25 AppKit        0x00007fff8be53d80 -[NSApplication run] + 682 
26 AppKit        0x00007fff8be1d368 NSApplicationMain + 1176 
27 MyApp        0x000000010000d102 main + 34 
28 libdyld.dylib      0x00007fff8ec5c5ad start + 1 

-drawRect 가끔 수신되지 않는 이유 -drawRect의 결과는, 내가 볼 수있는 일이 정확히 어떤 메시지/이벤트를 볼 수 있다면 난 그냥 알아 내야 할

이 스레드를 보았습니다 :

답변

0

좋아요, 그래서 제가 상위 2 개 프레임은 중요하지 않다고 말했지만, 그랬지.

방금 ​​두뇌 방구, 내가 중단 점 3 스택 프레임을 깊게 설정했다. 만약 내가 방금 drawRect에 그것을 설정했다면, 나는 그것이 실제로 기대 될 때마다 호출된다는 것을 알 것이다. 두 번째 스택 프레임에 if 문이있어서이 스택을 실행하지 못하게되었습니다.이 질문을 작성할 때 끊어 놓았던 스택 프레임으로 넘어갔습니다.

관련 문제