2013-05-22 2 views
3

내 응용 프로그램에는 UITextField와 같은 일부 항목이 포함 된 UIScrollView가 있으며 대부분이 뷰가이 스크롤 뷰와 함께로드 될 때 확대/축소 할 수 있습니다. 안팎으로 잘 작동합니다.EXC_BAD_ACCESS 코드 = 1 UIScrollView 집게 동작시 충돌

* thread #1: tid = 0x2503, 0x3b8155b6 libobjc.A.dylib`objc_msgSend + 22, stop reason = EXC_BAD_ACCESS (code=1, address=0x4) 
    frame #0: 0x3b8155b6 libobjc.A.dylib`objc_msgSend + 22 
    frame #1: 0x3552e9d4 QuartzCore`CALayerGetSuperlayer + 92 
    frame #2: 0x357c0e5e UIKit`-[UIView(Hierarchy) containsView:] + 34 
    frame #3: 0x358eb3d4 UIKit`-[UITextSelectionView affectedByScrollerNotification:] + 140 
    frame #4: 0x35a5b394 UIKit`-[UITextSelectionView scaleWillChange:] + 24 
    frame #5: 0x338c7036 CoreFoundation`_CFXNotificationPost + 1426 
    frame #6: 0x341dd598 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 72 
    frame #7: 0x341e105a Foundation`-[NSNotificationCenter postNotificationName:object:] + 30 
    frame #8: 0x35910bea UIKit`-[UIScrollView _updatePinchGestureForState:] + 946 
    frame #9: 0x3589bd88 UIKit`_UIGestureRecognizerSendActions + 128 
    frame #10: 0x358633f4 UIKit`-[UIGestureRecognizer _updateGestureWithEvent:] + 392 
    frame #11: 0x35a50a38 UIKit`___UIGestureRecognizerUpdate_block_invoke_0543 + 48 
    frame #12: 0x3578782e UIKit`_UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 218 
    frame #13: 0x35786292 UIKit`_UIGestureRecognizerUpdate + 1274 
    frame #14: 0x357911e6 UIKit`-[UIWindow _sendGesturesForEvent:] + 766 
    frame #15: 0x35790db2 UIKit`-[UIWindow sendEvent:] + 90 
    frame #16: 0x3577e800 UIKit`-[UIApplication sendEvent:] + 380 
    frame #17: 0x3577e11a UIKit`_UIApplicationHandleEvent + 6154 
    frame #18: 0x374725a2 GraphicsServices`_PurpleEventCallback + 590 
    frame #19: 0x374721d2 GraphicsServices`PurpleEventCallback + 34 
    frame #20: 0x3394b172 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34 
    frame #21: 0x3394b116 CoreFoundation`__CFRunLoopDoSource1 + 138 
    frame #22: 0x33949f98 CoreFoundation`__CFRunLoopRun + 1384 
    frame #23: 0x338bcebc CoreFoundation`CFRunLoopRunSpecific + 356 
    frame #24: 0x338bcd48 CoreFoundation`CFRunLoopRunInMode + 104 
    frame #25: 0x374712ea GraphicsServices`GSEventRunModal + 74 
    frame #26: 0x357d2300 UIKit`UIApplicationMain + 1120 
    frame #27: 0x000134a4 MyApp`main(argc=3, argv=0x2fdefc68) + 48 at main.m:14 
    frame #28: 0x00013470 MyApp`start + 40 
: 나는 항상 다음과 같습니다 충돌을 얻을

CALayerGetSuperlayer called on instance of __NSArrayM 
CALayerGetSuperlayer called on instance of NSShadow 
CALayerGetSuperlayer called on instance of __NSCFString 
CALayerGetSuperlayer called on instance of __NSCFType 
CALayerGetSuperlayer called on instance of UIButtonContent 

그리고 다른 시간을 : 나는 다음과 같이 그 콘솔에서 확대 및 축소 할 때

그러나, 가끔 어떤 메시지를 얻을

내 응용 프로그램은 ARC를 사용하며 좀비가 켜져있는 상태에서 실행하려고 시도합니다.이 경우 앱이 충돌하고 악기에 문제가 표시되지 않습니다.

어떤 일이 벌어지고 있는지 또는이 문제를 해결하기 위해해야 ​​할 일에 대한 아이디어가 있습니까?

편집 : Steve의 제안에 따라 다시 들어가서 좀비가 켜진 상태에서 다시 확인했는데 처음으로 잘못 처리 한 것 같습니다. 이제 좀비를 찾고있는 Instruments와 시뮬레이터를 실행할 때 컨트롤이 포함 된 UIScrollView가 포함 된 모달 대화 상자를 닫을 때 좀비가 표시됩니다. 좀비가 나타나면 여기에 악기의 화면 캡처입니다 :

Zombieland

것은 여기에서 미치게하는 것 것은 내가 열고 나는 충돌 또는 게재 좀비를 얻기 전에 모달 여러 번 종료해야한다는 것입니다. 좀비 객체의 객체 요약 내역에 내 코드가 표시되지 않습니다.

+1

내 생각에, 어떻게 든 UITextSelectionView에 첨부 된 레이어가 너무 일찍 할당 해제 된 것처럼 보입니다. 충돌을 일으키기 위해 당신은 무엇을해야합니까? 맞춤 레이어로 이상한 일을하고 있습니까? dealloc 메쏘드에 중단 점을 추가하여 유용한 것을 찾을 수 있습니다 :'br s -n "- [UITextSelectionView dealloc]"'. CALayer와 똑같은 작업을 시도해 볼 수도 있습니다 만, 그 중 하나와 관련된 많은 중단 점이있을 것으로 생각됩니다. 즉, 이것은 절대적인 추측입니다. –

+1

또한, 의도하지 않게 당신이 작업하고있는 앱의 이름을 유출 한 것 같습니다. 내 마케팅 담당자가 그 말에 대해 비하하는 뭔가를 갖게 될 것이라고 확신하지만, 귀하의 회사에 따라 다릅니다. –

+0

또 다른 생각 : 당신은/절대적으로/확실히 좀비를 켜고 있습니까? 올바른 대상을 사용하도록 설정 했습니까? 올바른 타겟을 사용하도록 설정 했습니까? 당신은'NSString * a = @ "a"와 같은 어떤 것으로 강제로 충돌 할 수 있어야합니다; CFRelease (__ bridge a); [길이]; - 이것이 좀비 도구에 나타나는지보십시오. –

답변

1

내 스크롤 뷰에 포함 된 UIView는 내 항목을 추가한다고해서 removeFromSuperview 메서드를 재정의했습니다. 나는 그 방법에 가서 [super removeFromSuperview] 호출하기 전에 선

[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

을 추가 할 때, 지금은 충돌없이 작동하는 것 같다.

+0

동일한 문제가 있지만 removeFromSuperview 메서드를 재정의하지 않았습니다. 내 문제가 무엇인지 짐작할 수 있니? – Bhushan

관련 문제