죄송합니다. 버그를 AFNetworking 문제가 아니라 UI 문제로 한정했습니다.iOS에서 팝업 창을 닫으려고 할 때 예외가 발생했습니다.
전 컬렉션보기가 있습니다. 콜렉션 뷰를 두드리면 팝 오버 윈도우가 표시되고 무언가를 다운로드하도록 선택할 수 있으며 진행률 표시 줄에 진행률이 표시됩니다. 그 동안에 collectionviewcell은 또 다른 진행 표시 줄을 자체적으로 표시합니다. 그런 다음 창을 닫고 셀을 다시 탭한 다음 무언가를 한 다음 닫습니다. 두 번째로 예외를 발생시키지 않을 수도 있으며 popOver를 열고 닫을 때 예외가 다시 발생합니다. 내가 추적 봄으로써 무엇이 잘못되었는지 아무 생각도 없어
* thread #1: tid = 0x1214fc, 0x38592626 libobjc.A.dylib`objc_msgSend + 6, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xb1b8d8b0)
frame #0: 0x38592626 libobjc.A.dylib`objc_msgSend + 6
frame #1: 0x302f7056 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 90
frame #2: 0x302f6ff6 UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30
frame #3: 0x302f6fd0 UIKit`-[UIControl sendAction:to:forEvent:] + 44
frame #4: 0x302e2736 UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 374
frame #5: 0x302f6a4e UIKit`-[UIControl touchesEnded:withEvent:] + 590
frame #6: 0x302f6720 UIKit`-[UIWindow _sendTouchesForEvent:] + 528
frame #7: 0x302f16ea UIKit`-[UIWindow sendEvent:] + 758
frame #8: 0x302c68ec UIKit`-[UIApplication sendEvent:] + 196
frame #9: 0x302c4f96 UIKit`_UIApplicationHandleEventQueue + 7102
frame #10: 0x2da7125a CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
frame #11: 0x2da7072a CoreFoundation`__CFRunLoopDoSources0 + 206
frame #12: 0x2da6ef1e CoreFoundation`__CFRunLoopRun + 622
frame #13: 0x2d9d9f4e CoreFoundation`CFRunLoopRunSpecific + 522
frame #14: 0x2d9d9d32 CoreFoundation`CFRunLoopRunInMode + 106
frame #15: 0x328d3662 GraphicsServices`GSEventRunModal + 138
frame #16: 0x3032516c UIKit`UIApplicationMain + 1136
* frame #17: 0x0003b12c ChinesePod`main(argc=1, argv=0x27dccd04) + 300 at main.m:39
: 여기
는 lldb에서 BT 트레이스이다. 내 앱에 어떤 문제가 있다고 생각하십니까? 내가 NSZombie를 사용하도록 설정하면, 내가 콘솔에서이 오류보고 : 편집
*** -[BlurViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x166e7df0
BlurViewController는 팝 오버 창을 보여주는 책임의 ViewController이다. BlurViewController가 할당 해제되었다는 것을 의미합니까? dismissDialog의
소스 코드 :
- (void)dismissDialog
{
[UIView animateWithDuration:kAnimationDuration animations:^{
self.view.alpha = 0.f;
self.popUp.transform = CGAffineTransformMakeScale(0, 0);
} completion:^(BOOL finished) {
[self removeFromParentViewController];
[self.view removeFromSuperview];
[self.popUp removeFromSuperview];
if (!self.popUp.isDownloading) {
_popUp = nil;
}
[UIView animateWithDuration:kAnimationDuration animations:^{
_blurView.alpha = 0.f;
} completion:^(BOOL finished) {
[_blurView removeFromSuperview];
}];
}];
}
AFNetworking을 사용하여 다운로드하는 데 사용하는 코드를 제공하십시오. – DilumN
당신이 말하는 일부 객체가 릴리스되었습니다. popover 표시 방법에 대한 코드를 게시하십시오. 또한 NSZombies를 활성화하여 실행 해보십시오. – Paulw11
@ Paulw11 Xode에서 좀비를 사용하면 일부는 도움이되지만 좀비 설정이있는 Instruments를 사용하면 훨씬 더 좋습니다 ... 모든 refcount 증가분과 감소율을 볼 수 있으며 모든 iOS에 대해 반드시 알아야 할 코드가 무엇인지 개발자 – RobP